Platform Explorer / Nuxeo Platform 2023.10

Extension point widgets

Documentation

Since 5.1.7 and 5.2.0, a widget can be defined globally in the application.

Layouts can reference global widgets in their row definition without having to redefine them in their widgets definitions. The widget with given name will be searched in this global registry only if it is not found in the layout definition.

Contribution Descriptors

  • Class: org.nuxeo.ecm.platform.forms.layout.descriptors.WidgetDescriptor

Existing Contributions

Contributions are presented in the same order as the registration order on this extension point. This order is displayed before the contribution name, in brackets.

  • nuxeo-admin-center-jsf-2023.10.13.jar /OSGI-INF/action-widgets-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="adminCenterTabs" type="tabs">
          <properties mode="view">
            <property name="actionsDisplay">links</property>
            <property name="addForm">true</property>
            <property name="useAjaxForm">#{useAjaxTabs}</property>
            <property name="category">NUXEO_ADMIN</property>
            <property name="actions">#{adminViews.availableActions}</property>
            <property name="currentTabAction">#{adminViews.currentView}</property>
            <property name="overallDisplay">vertical_block</property>
            <property name="tabContentBeforeInclude">/incl/appcenter/admin_tab_header.xhtml</property>
          </properties>
        </widget>
    
        <widget name="adminCenterSubTabs" type="tabs">
          <properties mode="view">
            <property name="actionsDisplay">links</property>
            <property name="addForm">true</property>
            <!-- use ajax only if bookmarkable URLs can be preserved -->
            <property name="useAjaxForm">#{canUseAjaxTabs}</property>
            <property name="actions">#{adminViews.availableSubActions}</property>
            <property name="currentTabAction">#{adminViews.currentSubView}</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-localconf-web-2023.10.13.jar /OSGI-INF/local-configuration-ui-types.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="ui_types_selection" type="shuttle">
          <labels>
            <label mode="any">label.local.configuration.ui.types.allowedTypesSelection</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>uitypesconf:allowedTypes</field>
          </fields>
          <properties mode="any">
            <property name="availableElementsLabel">
              label.local.configuration.selection.availableUITypes
            </property>
            <property name="selectedElementsLabel">
              label.local.configuration.selection.selectedUITypes
            </property>
            <property name="sourceItems">
              #{typesConfigurationActions.getNotSelectedTypes(layoutValue)}
            </property>
            <property name="sourceItemVar">type</property>
            <property name="sourceItemValue">#{type.id}</property>
            <property name="sourceItemLabel">#{messages[type.label]}</property>
            <property name="sourceItemOrdering">label</property>
            <property name="sourceItemCaseSensitive">true</property>
            <property name="targetItems">
              #{typesConfigurationActions.getSelectedTypes(layoutValue)}
            </property>
            <property name="targetItemVar">type</property>
            <property name="targetItemValue">#{type.id}</property>
            <property name="targetItemLabel">#{messages[type.label]}</property>
          </properties>
        </widget>
    
        <widget name="deny_all_types" type="checkbox">
          <labels>
            <label mode="any">label.local.configuration.ui.types.denyAllTypes</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>uitypesconf:denyAllTypes</field>
          </fields>
        </widget>
    
        <widget name="default_type" type="selectOneMenu">
          <labels>
            <label mode="any">label.local.configuration.ui.automaticType</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>uitypesconf:defaultType</field>
          </fields>
          <selectOptions>
            <option itemLabel="#{messages['label.local.configuration.ui.defaultType']}" itemValue=""/>
            <options itemLabel="#{messages[type.label]}" itemValue="#{type.id}" value="#{typesConfigurationActions.getTypesWithSchemaFile(layoutValue)}" var="type"/>
          </selectOptions>
        </widget>
    
      </extension>
  • nuxeo-localconf-web-2023.10.13.jar /OSGI-INF/local-configuration-content-view.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="content_view_selection" type="list">
          <labels>
            <label mode="any">label.local.configuration.content.view.contentViewSelection</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>cvconf:cvNamesByType</field>
          </fields>
          <properties mode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="complexListItem" type="complex">
              <labels>
                <label mode="any"/>
              </labels>
              <fields>
                <field/>
              </fields>
              <properties mode="any">
                <property name="hideSubLabels">true</property>
                <property name="display">inline</property>
              </properties>
              <subWidgets>
                <widget name="docType" type="selectOneMenu">
                  <fields>
                    <field>docType</field>
                  </fields>
                  <labels>
                    <label mode="any"/>
                  </labels>
                  <selectOptions>
                    <options itemLabel="#{docType.label}" itemValue="#{docType.value}" value="#{contentViewConfigurationActions.availableDocTypes}" var="docType"/>
                  </selectOptions>
                </widget>
                <widget name="contentView" type="selectOneMenu">
                  <fields>
                    <field>contentView</field>
                  </fields>
                  <labels>
                    <label mode="any"/>
                  </labels>
                  <selectOptions>
                    <options itemLabel="#{contentView.label}" itemValue="#{contentView.value}" value="#{contentViewConfigurationActions.availableContentViews}" var="contentView"/>
                  </selectOptions>
                </widget>
              </subWidgets>
            </widget>
          </subWidgets>
        </widget>
    
      </extension>
  • nuxeo-platform-comment-web-2023.10.13.jar /OSGI-INF/widgets-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="document_comments_count" type="document_comments_count"/>
    
      </extension>
  • nuxeo-platform-contentview-jsf-2023.10.13.jar /OSGI-INF/layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="contentViewActions" type="template">
          <properties mode="view">
            <property name="template">
              /widgets/actions/content_view_actions_widget_template.xhtml
            </property>
            <property name="category">
              CONTENT_VIEW_ACTIONS CONTENT_VIEW_EXPORT_ACTIONS
            </property>
            <property name="styleClass">contentViewUpperActions</property>
            <property name="containerStyleClass">contentViewUpperAction</property>
            <property name="actionsDisplay">icons</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="maxActionsNumber">10</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-platform-login-token-jsf-2023.10.13.jar /OSGI-INF/token-authentication-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="authToken" type="text">
          <labels>
            <label mode="any">label.tokenauth.token</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>authtoken:token</field>
          </fields>
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="authTokenApplicationName" type="text">
          <labels>
            <label mode="any">label.tokenauth.applicationName</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>authtoken:applicationName</field>
          </fields>
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="authTokenDeviceId" type="text">
          <labels>
            <label mode="any">label.tokenauth.deviceId</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>authtoken:deviceId</field>
          </fields>
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="authTokenDeviceDescription" type="text">
          <labels>
            <label mode="any">label.tokenauth.deviceDescription</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>authtoken:deviceDescription</field>
          </fields>
        </widget>
    
        <widget name="authTokenPermission" type="text">
          <labels>
            <label mode="any">label.tokenauth.permission</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>authtoken:permission</field>
          </fields>
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="authTokenCreationDate" type="datetime">
          <labels>
            <label mode="any">label.tokenauth.creationDate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>authtoken:creationDate</field>
          </fields>
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}
            </property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-base-2023.10.13.jar /OSGI-INF/search-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="search_title" type="text">
          <labels>
            <label mode="any">label.dublincore.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:title</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="search_description" type="text">
          <labels>
            <label mode="any">label.dublincore.description</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:description</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="search_nature" type="suggestManyDirectory">
          <labels>
            <label mode="any">label.dublincore.nature</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:nature</field>
          </fields>
          <properties mode="any">
            <property name="width">100%</property>
            <property name="minChars">0</property>
            <property name="hideHelpLabel">true</property>
            <property name="directoryName">nature</property>
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="search_subjects" type="suggestManyDirectory">
          <labels>
            <label mode="any">label.dublincore.subject</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:subjects</field>
          </fields>
          <properties mode="any">
            <property name="width">100%</property>
            <property name="dbl10n">true</property>
            <property name="minChars">0</property>
            <property name="hideHelpLabel">true</property>
            <property name="directoryName">l10nsubjects</property>
          </properties>
        </widget>
    
        <widget name="search_rights" type="text">
          <labels>
            <label mode="any">label.dublincore.rights</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:rights</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="search_source" type="text">
          <labels>
            <label mode="any">label.dublincore.source</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:source</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="search_coverage" type="suggestManyDirectory">
          <labels>
            <label mode="any">label.dublincore.coverage</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:coverage</field>
          </fields>
          <properties mode="any">
            <property name="width">100%</property>
            <property name="dbl10n">true</property>
            <property name="minChars">0</property>
            <property name="hideHelpLabel">true</property>
            <property name="directoryName">l10ncoverage</property>
          </properties>
        </widget>
    
        <widget name="search_created_min" type="datetime">
          <labels>
            <label mode="any">label.dublincore.creationDateBetween</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:created_min</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">00:00</property>
          </properties>
        </widget>
    
        <widget name="search_created_max" type="datetime">
          <labels>
            <label mode="any">label.search.and</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:created_max</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">23:59</property>
          </properties>
        </widget>
    
        <widget name="search_modified_min" type="datetime">
          <labels>
            <label mode="any">label.dublincore.modificationDateBetween</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:modified_min</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">00:00</property>
          </properties>
        </widget>
    
        <widget name="search_modified_max" type="datetime">
          <labels>
            <label mode="any">label.search.and</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:modified_max</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">23:59</property>
          </properties>
        </widget>
    
        <widget name="search_issued_min" type="datetime">
          <labels>
            <label mode="any">label.dublincore.issueDateBetween</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:issued_min</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">00:00</property>
          </properties>
        </widget>
    
        <widget name="search_issued_max" type="datetime">
          <labels>
            <label mode="any">label.search.and</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:issued_max</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">23:59</property>
          </properties>
        </widget>
    
        <widget name="search_validated_min" type="datetime">
          <labels>
            <label mode="any">label.dublincore.validationDateBetween</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:valid_min</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">00:00</property>
          </properties>
        </widget>
    
        <widget name="search_validated_max" type="datetime">
          <labels>
            <label mode="any">label.search.and</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:valid_max</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">23:59</property>
          </properties>
        </widget>
    
        <widget name="search_expired_min" type="datetime">
          <labels>
            <label mode="any">label.dublincore.expirationDateBetween</label>
          </labels>
          <fields>
            <field>search:expired_min</field>
          </fields>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">00:00</property>
          </properties>
        </widget>
    
        <widget name="search_expired_max" type="datetime">
          <labels>
            <label mode="any">label.search.and</label>
          </labels>
          <fields>
            <field>search:expired_max</field>
          </fields>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">23:59</property>
          </properties>
        </widget>
    
        <widget name="search_format" type="text">
          <labels>
            <label mode="any">label.dublincore.format</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:format</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="search_path" type="select_path_tree">
          <labels>
            <label mode="any">label.advanced_search.searchpath</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:searchpath</field>
          </fields>
          <properties>
            <property name="labelOpenPopUp">label.relation.addPath</property>
          </properties>
        </widget>
    
        <widget name="search_language" type="text">
          <labels>
            <label mode="any">label.dublincore.language</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:language</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="search_deleted_documents" type="template">
          <labels>
            <label mode="any">label.search.deleted.documents</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>search:currentLifeCycleState</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /widgets/search_deleted_documents_widget.xhtml
            </property>
          </properties>
          <widgetModes>
            <mode value="any">
              #{nxu:test(deleteActions.trashManagementEnabled, mode, 'hidden')}
            </mode>
          </widgetModes>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-base-2023.10.13.jar /OSGI-INF/widgets-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="life_cycle_transitions" type="life_cycle_transitions">
    
          <documentation>
            Default widget listing available life cycle transitions from the
            document's current state and document's life cycle policy.
            <br/>
            The chosen transition is stored in the contextData of the document.
          </documentation>
    
          <labels>
            <label mode="any">label.life.cycle.changeFor</label>
          </labels>
          <fields>
            <field>contextData['lifeCycleTransition']</field>
          </fields>
          <widgetModes>
            <mode value="create">hidden</mode>
            <mode value="view">hidden</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="currentLifeCycleState">#{layoutValue.currentLifeCycleState}</property>
            <property name="lifeCycleName">#{layoutValue.lifeCyclePolicy}</property>
          </properties>
        </widget>
    
        <!-- group's layout widgets -->
        <widget name="group_name" type="text">
          <labels>
            <label mode="any">label.groupManager.groupName</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field schema="group">groupname</field>
          </fields>
          <widgetModes>
            <mode value="create">edit</mode>
            <mode value="any">hidden</mode>
          </widgetModes>
          <properties widgetMode="any">
            <property name="required">true</property>
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
        <widget name="group_label" type="text">
          <labels>
            <label mode="any">label.groupManager.groupLabel</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field schema="group">grouplabel</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
        <widget name="group_members" type="template">
          <labels>
            <label mode="any">label.groupManager.userMembers</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field schema="group">members</field>
          </fields>
          <properties widgetMode="any">
            <property name="template">
              /widgets/user_suggestion_widget_template.xhtml
            </property>
            <property name="userSuggestionSearchType">USER_TYPE</property>
            <property name="operationId">UserGroup.Suggestion</property>
            <property name="hideHelpLabel">true</property>
            <property name="suggestionFormatter">userEntryDefaultFormatter</property>
            <property name="selectionFormatter">userEntryDefaultFormatter</property>
          </properties>
        </widget>
        <widget name="group_subgroups" type="template">
          <labels>
            <label mode="any">label.groupManager.groupMembers</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field schema="group">subGroups</field>
          </fields>
          <properties widgetMode="any">
            <property name="template">
              /widgets/user_suggestion_widget_template.xhtml
            </property>
            <property name="userSuggestionSearchType">GROUP_TYPE</property>
            <property name="operationId">UserGroup.Suggestion</property>
            <property name="hideHelpLabel">true</property>
            <property name="suggestionFormatter">userEntryDefaultFormatter</property>
            <property name="selectionFormatter">userEntryDefaultFormatter</property>
          </properties>
        </widget>
      </extension>
  • nuxeo-platform-webapp-base-2023.10.13.jar /OSGI-INF/layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="document_edit_comment" type="textarea">
          <labels>
            <label mode="any">label.editComment</label>
          </labels>
          <helpLabels>
            <label mode="any">label.editComment.tooltip</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>contextData['comment']</field>
          </fields>
          <widgetModes>
            <mode value="create">hidden</mode>
          </widgetModes>
        </widget>
    
        <widget name="document_edit_current_version" type="text">
          <labels>
            <label mode="any">label.version</label>
          </labels>
          <helpLabels>
            <label mode="any">label.versioning.currentVersion.tooltip</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>#{versioningManager.getVersionLabel(layoutValue)}</field>
          </fields>
          <widgetModes>
            <mode value="create">hidden</mode>
            <mode value="any">
              #{nxu:test(layoutValue.versionable and
              !layoutValue.folder, 'view', 'hidden')}
            </mode>
          </widgetModes>
        </widget>
    
        <widget name="document_edit_versioning_options" type="setVariable">
          <labels>
            <label mode="any">label.versioning.selectVersioningOption</label>
          </labels>
          <helpLabels>
            <label mode="any">label.versioning.changeVersion.tooltip</label>
          </helpLabels>
          <translated>true</translated>
          <widgetModes>
            <mode value="create">hidden</mode>
            <mode value="any">
              #{nxu:test(layoutValue.versionable and not
              layoutValue.folder and
              versioningManager.getVersionIncEditOptions(layoutValue).hasOptions(),
              mode, 'hidden')}
            </mode>
          </widgetModes>
          <properties widgetMode="any">
            <property name="var">incOptions</property>
            <property name="value">
              #{versioningManager.getVersionIncEditOptions(layoutValue)}
            </property>
            <property name="cache">true</property>
          </properties>
          <subWidgets>
            <widget name="versioning_options" type="selectOneRadio">
              <fields>
                <field>contextData['VersioningOption']</field>
              </fields>
              <properties widgetMode="edit">
                <property name="defaultValue">
                  #{incOptions.defaultVersioningAction.name()}
                </property>
                <property name="converter">documentVersioningConverter</property>
                <property name="layout">pageDirection</property>
                <property name="required">true</property>
                <property name="requiredMessage">
                  #{messages['error.versioning.none_selected']}
                </property>
              </properties>
              <selectOptions>
                <options itemLabel="#{messages[item.getValue()]}" itemValue="#{item.getKey()}" value="#{incOptions.optionsForDisplay}" var="item"/>
              </selectOptions>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="userPanelTop" type="documentActions">
          <properties widgetMode="view">
            <property name="category">USER_PANEL_TOP</property>
          </properties>
          <controls mode="any">
            <control name="gridStyleClass">gridStyle12</control>
          </controls>
        </widget>
    
        <widget name="userPanelLeft" type="documentActions">
          <properties widgetMode="view">
            <property name="category">USER_PANEL_LEFT</property>
          </properties>
          <controls mode="any">
            <control name="gridStyleClass">gridStyle5</control>
          </controls>
        </widget>
    
        <widget name="userPanelRight" type="documentActions">
          <properties widgetMode="view">
            <property name="category">USER_PANEL_RIGHT</property>
          </properties>
          <controls mode="any">
            <control name="gridStyleClass">gridStyle7</control>
          </controls>
        </widget>
    
        <widget name="userPanelBottom" type="documentActions">
          <properties widgetMode="view">
            <property name="category">USER_PANEL_BOTTOM</property>
          </properties>
          <controls mode="any">
            <control name="gridStyleClass">gridStyle12</control>
          </controls>
        </widget>
    
        <widget name="userLayout" type="layout">
          <properties widgetMode="any">
            <property name="name">user</property>
          </properties>
        </widget>
    
    
        <widget name="userAdditionalWidgets" type="documentActions">
          <properties widgetMode="any">
            <property name="category">USER_ADDITIONAL_WIDGETS</property>
            <property name="widgetMode">#{layout.mode}</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
      </extension>
  • nuxeo-platform-user-registration-web-2023.10.13.jar /OSGI-INF/user-registration-layouts-contrib.xml
    <?xml version='1.0' encoding='UTF-8'?>
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="listing_ace_begin" type="datetime">
          <labels>
            <label mode="any">label.permissions.from</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.docinfo.begin</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateFormatter()}</property>
          </properties>
          <properties mode="csv">
            <property name="csv_formatMask">#{nxu:basicDateFormatter()}</property>
            <property name="csv_forceType">date</property>
          </properties>
        </widget>
    
        <widget name="listing_ace_end" type="datetime">
          <labels>
            <label mode="any">label.permissions.to</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.docinfo.end</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateFormatter()}</property>
          </properties>
          <properties mode="csv">
            <property name="csv_formatMask">#{nxu:basicDateFormatter()}</property>
            <property name="csv_forceType">date</property>
          </properties>
        </widget>
    
        <widget name="request_config_allowUserCreation" type="checkbox">
          <labels>
            <label mode="any">label.registration.config.allowUserCreation</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.registration.config.help.allowUserCreation</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>registrationconfiguration:allowUserCreation</field>
          </fields>
        </widget>
    
        <widget name="request_config_allowDirectValidationForExistingUser" type="checkbox">
          <labels>
            <label mode="any">label.registration.config.allowDirectValidationForExistingUser</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.registration.config.help.allowDirectValidationForExistingUser</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>registrationconfiguration:allowDirectValidationForExistingUser</field>
          </fields>
        </widget>
    
        <widget name="request_config_forceRight" type="checkbox">
          <labels>
            <label mode="any">label.registration.config.forceRightAssignment</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.registration.config.help.forceRightAssignment</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>registrationconfiguration:forceRightAssignment</field>
          </fields>
        </widget>
    
        <widget name="request_config_displayLocalRegistration" type="checkbox">
          <labels>
            <label mode="any">label.registration.config.displayLocalRegistrationTab</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.registration.config.help.displayLocalRegistrationTab</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>registrationconfiguration:displayLocalRegistrationTab</field>
          </fields>
        </widget>
    
        <widget name="user_request_login" type="text">
          <labels>
            <label mode="any">label.userinfo.login</label>
          </labels>
          <fields>
            <field>data.userinfo.login</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
            <property name="validator">
              #{userRegistrationActions.validateUsernameEmail}
            </property>
          </properties>
        </widget>
    
        <widget name="user_request_firstName" type="text">
          <labels>
            <label mode="any">label.userinfo.firstName</label>
          </labels>
          <fields>
            <field>data.userinfo.firstName</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="user_request_lastName" type="text">
          <labels>
            <label mode="any">label.userinfo.lastName</label>
          </labels>
          <fields>
            <field>data.userinfo.lastName</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="user_request_groups" type="multipleUsersSuggestion">
          <labels>
            <label mode="any">label.userinfo.groups</label>
          </labels>
          <fields>
            <field>data.userinfo.groups</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="user_request_email" type="text">
          <labels>
            <label mode="any">label.userinfo.email</label>
          </labels>
          <fields>
            <field>data.userinfo.email</field>
          </fields>
          <properties widgetMode="edit">
            <property name="required">true</property>
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="doc_request_permission" type="template">
          <labels>
            <label mode="any">label.docinfo.permission</label>
          </labels>
          <fields>
            <field>data.docinfo.permission</field>
          </fields>
          <properties widgetMode="edit">
            <property name="required">true</property>
          </properties>
          <properties widgetMode="any">
            <property name="template">/widgets/user_request_rights_widget_template.xhtml</property>
          </properties>
        </widget>
    
        <widget name="doc_request_date_range" type="datetimeRange">
          <labels>
            <label mode="any">label.request.date.range</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.request.help.range</label>
          </helpLabels>
          <fields>
            <field>data.docinfo.begin</field>
            <field>data.docinfo.end</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="multiple_request_emails" type="textarea">
          <labels>
            <label mode="any">label.request.multiple.emails</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.request.help.multiple.emails</label>
          </helpLabels>
          <fields>
            <field>data.multipleEmails</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
            <property name="required">true</property>
            <property name="validator">
              #{userRegistrationActions.validateMultipleUser}
            </property>
          </properties>
        </widget>
    
        <widget name="user_request_copy_owner" type="checkbox">
          <labels>
            <label mode="any">label.request.copyOwner</label>
          </labels>
          <fields>
            <field>data.copyOwner</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="user_request_group" type="multipleUsersSuggestion">
          <labels>
            <label mode="any">label.request.groups</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.userinfo.groups</field>
          </fields>
          <widgetModes>
            <mode value="edit">
              #{nxu:test(webActions.checkFilter('usersGroupsManagementAccess'),
              'edit', 'view')}
            </mode>
            <mode value="editPassword">********</mode>
          </widgetModes>
          <properties widgetMode="any">
            <property name="userSuggestionSearchType">GROUP_TYPE</property>
            <property name="hideAdminGroups">true</property>
            <property name="hidePowerUsersGroup">true</property>
          </properties>
        </widget>
    
        <widget name="user_request_comment" type="textarea">
          <labels>
            <label mode="any">label.request.comment</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.request.help.comment</label>
          </helpLabels>
          <fields>
            <field>data.comment</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="user_request_accept" type="template">
          <labels>
            <label mode="any">command.userrequest.accept</label>
          </labels>
          <widgetModes>
            <mode value="any">#{currentUser.isAdministrator() ? 'edit' : 'hidden'}</mode>
          </widgetModes>
          <fields>
            <field>data</field>
          </fields>
          <properties mode="any">
            <property name="template">/widgets/user_request_accept_widget_template.xhtml</property>
          </properties>
        </widget>
    
        <widget name="user_request_reject" type="template">
          <labels>
            <label mode="any">command.userrequest.reject</label>
          </labels>
          <widgetModes>
            <mode value="any">#{currentUser.isAdministrator() ? 'edit' : 'hidden'}</mode>
          </widgetModes>
          <fields>
            <field>data</field>
          </fields>
          <properties mode="any">
            <property name="template">/widgets/user_request_reject_widget_template.xhtml</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-base-2023.10.13.jar /OSGI-INF/layouts-listing-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="listing_ajax_selection_box_with_current_document" type="listing_ajax_selection_box_with_current_document">
          <aliases>
            <alias>listing_selection_box_with_current_document</alias>
          </aliases>
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>selected</field>
            <field>data.ref</field>
          </fields>
        </widget>
    
        <widget name="listing_ajax_selection_box" type="listing_ajax_selection_box">
          <aliases>
            <alias>listing_selection_box</alias>
          </aliases>
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>selected</field>
            <field>data.ref</field>
          </fields>
        </widget>
    
        <widget name="listing_icon_type" type="listing_icon_type">
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>data</field>
            <field>data.ref</field>
            <field>data.type</field>
            <field>data.folder</field>
          </fields>
        </widget>
    
        <widget name="listing_big_icon_type" type="listing_big_icon_type">
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>data</field>
            <field>data.ref</field>
            <field>data.type</field>
            <field>data.folder</field>
          </fields>
        </widget>
    
        <widget name="listing_big_icon_type_link" type="listing_big_icon_type_link">
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>data</field>
            <field>data.ref</field>
            <field>data.type</field>
            <field>data.folder</field>
          </fields>
        </widget>
    
        <widget name="listing_title_link" type="listing_title_link">
          <labels>
            <label mode="any">label.content.header.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
            <field>data.ref</field>
            <field>data.dc.description</field>
            <field>data.file.content</field>
            <field>data.file.content.filename</field>
          </fields>
          <properties mode="any">
            <property name="tabs">MAIN_TABS:documents</property>
            <property name="file_property_name">file:content</property>
            <property name="file_schema">file</property>
          </properties>
        </widget>
    
        <widget name="listing_lock_icon" type="listing_lock_icon">
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>data.lock</field>
            <field>data.lockInfo</field>
          </fields>
        </widget>
    
        <widget name="listing_modification_date" type="datetime">
          <labels>
            <label mode="any">label.content.header.modified</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.modified</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateFormatter()}</property>
          </properties>
          <properties mode="csv">
            <property name="csv_formatMask">#{nxu:basicDateFormatter()}</property>
            <property name="csv_forceType">date</property>
          </properties>
        </widget>
    
        <widget name="listing_issued_date" type="datetime">
          <labels>
            <label mode="any">label.content.header.issued</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.issued</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateFormatter()}</property>
          </properties>
          <properties mode="csv">
            <property name="csv_formatMask">#{nxu:basicDateFormatter()}</property>
            <property name="csv_forceType">date</property>
          </properties>
        </widget>
    
        <widget name="listing_author" type="listing_author">
          <labels>
            <label mode="any">label.content.header.author</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dublincore.creator</field>
          </fields>
        </widget>
    
        <widget name="listing_lifecycle" type="text">
          <labels>
            <label mode="any">label.content.header.currentLifecycleState</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.currentLifeCycleState</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="listing_livedit_link" type="listing_livedit_link">
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>data</field>
          </fields>
          <properties mode="any">
            <property name="file_schema">file</property>
            <property name="file_field_name">content</property>
            <property name="filename_field_name">filename</property>
          </properties>
        </widget>
    
        <widget name="listing_version" type="listing_version">
          <labels>
            <label mode="any">label.version</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
          </fields>
        </widget>
    
        <widget name="listing_description" type="textarea">
          <labels>
            <label mode="any">label.dublincore.description</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.description</field>
          </fields>
        </widget>
    
        <widget name="listing_nature" type="selectOneDirectory">
          <labels>
            <label mode="any">label.dublincore.nature</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.nature</field>
          </fields>
          <properties mode="any">
            <property name="directoryName">nature</property>
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="listing_subjects" type="template">
          <labels>
            <label mode="any">label.dublincore.subject</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.subjects</field>
          </fields>
          <properties mode="any">
            <property name="template">/widgets/subjects_widget.xhtml</property>
          </properties>
        </widget>
    
        <widget name="listing_rights" type="text">
          <labels>
            <label mode="any">label.dublincore.rights</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.rights</field>
          </fields>
        </widget>
    
        <widget name="listing_source" type="text">
          <labels>
            <label mode="any">label.dublincore.source</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.source</field>
          </fields>
        </widget>
    
        <widget name="listing_coverage" type="template">
          <labels>
            <label mode="any">label.dublincore.coverage</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.coverage</field>
          </fields>
          <properties mode="any">
            <property name="template">/widgets/coverage_widget.xhtml</property>
          </properties>
        </widget>
    
        <widget name="listing_creation_date" type="datetime">
          <labels>
            <label mode="any">label.dublincore.created</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.created</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateFormatter()}</property>
          </properties>
          <properties mode="csv">
            <property name="csv_formatMask">#{nxu:basicDateFormatter()}</property>
            <property name="csv_forceType">date</property>
          </properties>
        </widget>
    
        <widget name="listing_format" type="text">
          <labels>
            <label mode="any">label.dublincore.format</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.format</field>
          </fields>
        </widget>
    
        <widget name="listing_language" type="text">
          <labels>
            <label mode="any">label.dublincore.language</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.language</field>
          </fields>
        </widget>
    
        <widget name="listing_expiration_date" type="datetime">
          <labels>
            <label mode="any">label.dublincore.expired</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.expired</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateFormatter()}</property>
          </properties>
          <properties mode="csv">
            <property name="csv_formatMask">#{nxu:basicDateFormatter()}</property>
            <property name="csv_forceType">date</property>
          </properties>
        </widget>
    
        <widget name="listing_contributors" type="template">
          <labels>
            <label mode="any">label.dublincore.contributors</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.contributors</field>
          </fields>
          <properties mode="any">
            <property name="template">/widgets/contributors_widget.xhtml</property>
          </properties>
        </widget>
    
        <widget name="listing_last_contributor" type="listing_last_contributor">
          <labels>
            <label mode="any">label.dublincore.lastContributor</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dc.lastContributor</field>
          </fields>
        </widget>
    
        <widget name="listing_thumbnail" type="listing_thumbnail">
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>data</field>
          </fields>
        </widget>
      </extension>
  • nuxeo-platform-relations-web-2023.10.13.jar /OSGI-INF/search-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="relation_search_title" type="text">
          <labels>
            <label mode="any">label.relation.search.title</label>
          </labels>
          <translated>true</translated>
          <helpLabels>
            <label mode="any">label.relation.search.title.info</label>
          </helpLabels>
          <fields>
            <field>rel_srch:dc_title</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="relation_search_fulltext" type="text">
          <labels>
            <label mode="any">label.relation.search.all_words</label>
          </labels>
          <translated>true</translated>
          <helpLabels>
            <label mode="any">label.relation.search.all_words.info</label>
          </helpLabels>
          <fields>
            <field>rel_srch:ecm_fulltext</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="relation_search_deleted_documents" type="template">
          <labels>
            <label mode="any">label.relation.deleted.documents</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>rel_srch:currentLifeCycleState</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /widgets/search_deleted_documents_widget.xhtml
            </property>
          </properties>
          <widgetModes>
            <mode value="any">
              #{nxu:test(deleteActions.trashManagementEnabled, 'edit', 'hidden')}
            </mode>
          </widgetModes>
        </widget>
    
        <widget name="relation_search_path" type="select_path_tree">
          <labels>
            <label mode="any">label.relation.search.path</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>rel_srch:ecm_path</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
            <property name="labelOpenPopUp">label.relation.addPath</property>
            <property name="showAllDomains">true</property>
          </properties>
        </widget>
    
        <widget name="relation_listing_title_link" type="relation_listing_title_link">
          <labels>
            <label mode="any">label.content.header.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
            <field>data.ref</field>
            <field>data.dc.title</field>
            <field>data.file.content</field>
            <field>data.file.filename</field>
          </fields>
          <properties mode="any">
            <property name="file_property_name">file:content</property>
            <property name="file_schema">file</property>
          </properties>
        </widget>
    
        <widget name="listing_path" type="text">
          <labels>
            <label mode="any">label.relation.search.path</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.pathAsString</field>
          </fields>
        </widget>
    
      </extension>
  • nuxeo-platform-rendition-web-2023.10.13.jar /OSGI-INF/search-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="stored_rendition_search_title" type="text">
          <labels>
            <label mode="any">label.dublincore.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>stored_rend_srch:dc_title</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="stored_rendition_search_creation_min" type="datetime">
          <labels>
            <label mode="any">label.dublincore.creationDateBetween</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>stored_rend_srch:dc_created_min</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">00:00</property>
          </properties>
        </widget>
    
        <widget name="stored_rendition_search_creation_max" type="datetime">
          <labels>
            <label mode="any">label.search.and</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>stored_rend_srch:dc_created_max</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">23:59</property>
          </properties>
        </widget>
    
        <widget name="stored_rendition_search_source_modification_min" type="datetime">
          <labels>
            <label mode="any">label.rendition.search.sourceModificationDateBetween</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>stored_rend_srch:rend_sourceModificationDate_min</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">00:00</property>
          </properties>
        </widget>
    
        <widget name="stored_rendition_search_source_modification_max" type="datetime">
          <labels>
            <label mode="any">label.search.and</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>stored_rend_srch:rend_sourceModificationDate_max</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
            <property name="defaultTime">23:59</property>
          </properties>
        </widget>
    
        <widget name="stored_rendition_search_rendition_name" type="select_renditionNames">
          <labels>
            <label mode="any">label.rendition.search.renditionName</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>stored_rend_srch:rend_renditionName</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="stored_rendition_search_rendition_variant" type="text">
          <labels>
            <label mode="any">label.rendition.search.renditionVariant</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>stored_rend_srch:rend_renditionVariant</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="listing_rendition_title_link" type="listing_rendition_title_link">
          <labels>
            <label mode="any">label.rendition.title_link</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
            <field>data.ref</field>
            <field>data.dc.description</field>
            <field>data.file.content</field>
            <field>data.file.content.filename</field>
          </fields>
          <properties mode="any">
            <property name="file_property_name">file:content</property>
            <property name="file_schema">file</property>
          </properties>
        </widget>
    
        <widget name="listing_rendition_source_title_link" type="listing_rendition_source_title_link">
          <labels>
            <label mode="any">label.rendition.source_title_link</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
            <field>data.ref</field>
            <field>data.dc.description</field>
            <field>data.file.content</field>
            <field>data.file.content.filename</field>
          </fields>
          <properties mode="any">
            <property name="file_property_name">file:content</property>
            <property name="file_schema">file</property>
          </properties>
        </widget>
    
        <widget name="listing_rendition_source_modification_date" type="datetime">
          <labels>
            <label mode="any">label.rendition.sourceModificationDate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.rend.sourceModificationDate</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
        </widget>
    
        <widget name="listing_rendition_name" type="text">
          <labels>
            <label mode="any">label.rendition.renditionName</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.rend.renditionName</field>
          </fields>
        </widget>
    
        <widget name="listing_rendition_variant" type="text">
          <labels>
            <label mode="any">label.rendition.renditionVariant</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.rend.renditionVariant</field>
          </fields>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-base-2023.10.13.jar /OSGI-INF/users-layouts-listing-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="listing_userName" type="singleUserSuggestion">
          <labels>
            <label mode="any">label.userManager.user</label>
          </labels>
          <fields>
            <field>data.id</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
          <properties widgetMode="view">
            <property name="userSuggestionSearchType">USER_TYPE</property>
            <property name="firstLabelField">firstName</property>
            <property name="secondLabelField">lastName</property>
            <property name="hideFirstLabel">true</property>
            <property name="hideSecondLabel">true</property>
            <property name="displayAction">edit</property>
            <property name="hideIcon">true</property>
          </properties>
        </widget>
    
        <widget name="listing_firstName" type="text">
          <labels>
            <label mode="any">label.userManager.firstName</label>
          </labels>
          <fields>
             <field>data.user.firstName</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="listing_lastName" type="text">
          <labels>
            <label mode="any">label.userManager.lastName</label>
          </labels>
          <fields>
             <field>data.user.lastName</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="listing_email" type="text">
          <labels>
            <label mode="any">email</label>
          </labels>
          <fields>
             <field>data.user.email</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="listing_groupName" type="singleUserSuggestion">
          <labels>
            <label mode="any">label.groupManager.groupName</label>
          </labels>
          <fields>
             <field>data.group.groupname</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
          <properties widgetMode="view">
            <property name="userSuggestionSearchType">GROUP_TYPE</property>
            <property name="hideFirstLabel">true</property>
            <property name="displayAction">edit</property>
            <property name="hideIcon">true</property>
          </properties>
        </widget>
    
        <widget name="listing_groupLabel" type="text">
          <labels>
            <label mode="any">label.groupManager.groupLabel</label>
          </labels>
          <fields>
             <field>data.group.grouplabel</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-base-2023.10.13.jar /OSGI-INF/collection-layout-listing-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="listing_manage_collection" type="listing_manage_document">
          <labels>
            <label mode="any">action.view.manage</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
          </fields>
        </widget>
      </extension>
  • nuxeo-platform-webapp-core-2023.10.13.jar /OSGI-INF/action-widgets-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="documentTabs" type="tabs">
          <properties mode="view">
            <property name="actionsDisplay">links</property>
            <property name="addForm">true</property>
            <property name="useAjaxForm">#{useAjaxTabs}</property>
            <property name="actions">#{tabsActionsList}</property>
            <property name="currentTabAction">#{webActions.currentTabAction}</property>
          </properties>
        </widget>
    
        <widget name="documentSubTabs" type="tabs">
          <properties mode="view">
            <property name="actionsDisplay">links</property>
            <property name="addForm">true</property>
            <property name="useAjaxForm">#{useAjaxTabs}</property>
            <property name="actions">#{subTabsActionsList}</property>
            <property name="currentTabAction">#{webActions.currentSubTabAction}</property>
            <property name="styleClass">subtabsBar</property>
          </properties>
        </widget>
    
        <widget name="documentActionsUpperButtons" type="documentActionsWithForms">
          <properties mode="view">
            <property name="category">DOCUMENT_UPPER_ACTION</property>
            <property name="actionsDisplay">icons</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="maxActionsNumber">5</property>
            <property name="styleClass">globalActions contextActions</property>
            <property name="actionStyleClass">button</property>
          </properties>
        </widget>
    
        <widget name="documentActionSubviewUpperList" type="documentActionsWithForms">
          <properties mode="view">
            <property name="category">
              SUBVIEW_UPPER_LIST, SUBVIEW_UPPER_LIST_HREF
            </property>
            <property name="actionsDisplay">links</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="maxActionsNumber">5</property>
            <property name="styleClass">action_bar</property>
            <property name="actionStyleClass">button</property>
          </properties>
        </widget>
    
        <widget name="headerSearch" type="documentActionsWithForms">
          <properties mode="view">
            <property name="category">SEARCH_ACTIONS</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="styleClass">userSearchBlock</property>
            <property name="actionStyleClass">advancedSearchLink</property>
          </properties>
        </widget>
    
        <widget name="mainTabs" type="documentActionsWithForms">
          <properties mode="view">
            <property name="category">MAIN_TABS</property>
            <property name="overallDisplay">menu</property>
            <property name="styleClass">mainTabs</property>
            <property name="currentAction">
              #{webActions.getCurrentTabAction('MAIN_TABS')}
            </property>
          </properties>
        </widget>
    
        <widget name="userMenuActions" type="documentActionsWithForms">
          <labels>
            <label mode="any">#{messages['label.loggedAsUser']}</label>
          </labels>
          <properties mode="view">
            <property name="category">USER_MENU_ACTIONS</property>
            <property name="actionsDisplay">links</property>
            <property name="overallDisplay">rollover_menu</property>
            <property name="styleClass">userMenuActions</property>
            <property name="labelStyleClass">#{currentUser.name}</property>
          </properties>
        </widget>
    
        <widget name="userActions" type="documentActionsWithForms">
          <properties mode="view">
            <property name="category">
              USER_SERVICES, USER_SERVICES_BOTTOM
            </property>
            <property name="actionsDisplay">links</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="styleClass">userActions</property>
          </properties>
        </widget>
    
        <widget name="footerLinks" type="documentActionsWithForms">
          <properties mode="view">
            <property name="category">FOOTER</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="separator"> | </property>
            <property name="styleClass">nuxLinks</property>
          </properties>
        </widget>
    
        <widget name="documentEditButtons" type="documentActions">
          <properties mode="view">
            <property name="actionsDisplay">buttons</property>
            <property name="category">EDIT_DOCUMENT_FORM</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="actionStyleClass">button</property>
          </properties>
        </widget>
    
        <widget name="documentCreateButtons" type="documentActions">
          <properties mode="view">
            <property name="actionsDisplay">buttons</property>
            <property name="category">CREATE_DOCUMENT_FORM</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="actionStyleClass">button</property>
          </properties>
        </widget>
    
        <widget name="breadcrumbActions" type="documentActionsWithForms">
          <properties mode="view">
            <property name="category">LIVEEDIT_CREATE_ACTIONS,BREADCRUMB_ACTIONS</property>
            <property name="actionsDisplay">icons</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="styleClass">action_bar</property>
            <property name="actionStyleClass">button</property>
          </properties>
        </widget>
    
        <widget name="importActions" type="documentActionsWithForms">
          <properties mode="view">
            <property name="category">IMPORT_ACTIONS</property>
            <property name="actionsDisplay">buttons</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="styleClass">action_bar</property>
            <property name="actionStyleClass">importButton</property>
          </properties>
        </widget>
    
        <widget name="treeExplorerTabs" type="documentTabsWithForms">
          <properties mode="view">
            <property name="category">TREE_EXPLORER</property>
            <property name="actionsDisplay">icons</property>
            <property name="hideSingleTab">false</property>
            <property name="useAjaxForm">true</property>
          </properties>
        </widget>
    
        <widget name="blobActions" type="actions">
          <properties mode="view">
            <property name="actionsDisplay">icons</property>
            <property name="overallDisplay">horizontal_block</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-core-2023.10.13.jar /OSGI-INF/layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="nature" type="suggestOneDirectory">
          <labels>
            <label mode="any">label.dublincore.nature</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:nature</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.nature?'hidden':'view'}</mode>
          </widgetModes>
          <properties mode="any">
            <property name="width">100%</property>
            <property name="minChars">0</property>
            <property name="hideHelpLabel">true</property>
            <property name="directoryName">nature</property>
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="subjects" type="suggestManyDirectory">
          <labels>
            <label mode="any">label.dublincore.subject</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.dublincore.subjects.info</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>dc:subjects</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.subjects?'hidden':'view'}</mode>
          </widgetModes>
          <properties mode="any">
            <property name="width">100%</property>
            <property name="dbl10n">true</property>
            <property name="minChars">0</property>
            <property name="hideHelpLabel">true</property>
            <property name="directoryName">l10nsubjects</property>
          </properties>
        </widget>
    
        <widget name="rights" type="text">
          <labels>
            <label mode="any">label.dublincore.rights</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:rights</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.rights?'hidden':'view'}</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="source" type="text">
          <labels>
            <label mode="any">label.dublincore.source</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:source</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.source?'hidden':'view'}</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="coverage" type="suggestOneDirectory">
          <labels>
            <label mode="any">label.dublincore.coverage</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.dublincore.coverage.info</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>dc:coverage</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.coverage?'hidden':'view'}</mode>
          </widgetModes>
          <properties mode="any">
            <property name="width">100%</property>
            <property name="dbl10n">true</property>
            <property name="minChars">0</property>
            <property name="hideHelpLabel">true</property>
            <property name="directoryName">l10ncoverage</property>
          </properties>
        </widget>
    
        <widget name="created" type="datetime">
          <labels>
            <label mode="any">label.dublincore.created</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:created</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.created?'hidden':'view'}</mode>
            <mode value="any">view</mode>
            <mode value="pdf">pdf</mode>
          </widgetModes>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
        </widget>
    
        <widget name="modified" type="datetime">
          <labels>
            <label mode="any">label.dublincore.modified</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:modified</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.modified?'hidden':'view'}</mode>
            <mode value="any">view</mode>
            <mode value="pdf">pdf</mode>
          </widgetModes>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateAndTimeFormatter()}</property>
          </properties>
        </widget>
    
        <widget name="format" type="text">
          <labels>
            <label mode="any">label.dublincore.format</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:format</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.format?'hidden':'view'}</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="language" type="text">
          <labels>
            <label mode="any">label.dublincore.language</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:language</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.language?'hidden':'view'}</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="expired" type="datetime">
          <labels>
            <label mode="any">label.dublincore.expired</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:expired</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.expired?'hidden':'view'}</mode>
          </widgetModes>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateFormatter()}</property>
          </properties>
        </widget>
    
        <widget name="author" type="template">
          <labels>
            <label mode="any">label.dublincore.creator</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.dublincore.author.info</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>dc:creator</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.creator?'hidden':'view'}</mode>
            <mode value="any">view</mode>
            <mode value="pdf">pdf</mode>
          </widgetModes>
          <properties mode="any">
            <property name="template">
              /widgets/single_user_widget_template.xhtml
            </property>
          </properties>
        </widget>
    
        <widget name="contributors" type="template">
          <labels>
            <label mode="any">label.dublincore.contributors</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.dublincore.contributors.info</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>dc:contributors</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.contributors?'hidden':'view'}
            </mode>
          </widgetModes>
          <properties mode="any">
            <property name="template">/widgets/contributors_widget.xhtml</property>
          </properties>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="lastContributor" type="template">
          <labels>
            <label mode="any">label.dublincore.lastContributor</label>
          </labels>
          <helpLabels>
            <label mode="edit">label.dublincore.lastContributor.info</label>
          </helpLabels>
          <translated>true</translated>
          <fields>
            <field>dc:lastContributor</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.lastContributor?'hidden':'view'}
            </mode>
            <mode value="any">view</mode>
            <mode value="pdf">pdf</mode>
          </widgetModes>
          <properties mode="any">
            <property name="template">
              /widgets/single_user_widget_template.xhtml
            </property>
          </properties>
        </widget>
    
        <widget name="title" type="text">
          <labels>
            <label mode="any">title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:title</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.title?'hidden':'view'}</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="required">true</property>
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="description" type="textarea">
          <labels>
            <label mode="any">description</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dc:description</field>
          </fields>
          <widgetModes>
            <mode value="view_summary">#{empty layoutValue.dc.description?'hidden':'view'}
            </mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="file" type="extendedFile">
          <labels>
            <label mode="any">label.file.content</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>file:content</field>
            <field>file:content/name</field>
          </fields>
        </widget>
    
        <widget name="note" type="richtext_with_mimetype">
          <labels>
            <label mode="any">note</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>note:note</field>
            <field>note:mime_type</field>
          </fields>
        </widget>
    
        <widget name="files" type="template">
          <labels>
            <label mode="any">label.files.files</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field schema="files">files</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /widgets/files_list_widget_template.xhtml
            </property>
          </properties>
          <properties widgetMode="edit">
            <property name="diff">true</property>
          </properties>
          <subWidgets>
            <widget name="file" type="template">
              <labels>
                <label mode="any"/>
              </labels>
              <fields>
                <field>file</field>
                <field>file/name</field>
              </fields>
              <properties mode="any">
                <property name="template">
                  /widgets/extended_subfile_widget.xhtml
                </property>
              </properties>
              <properties widgetMode="edit">
                <property name="required">true</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="header_title_and_permlink" type="title_and_permlink">
          <fields>
            <field/>
          </fields>
          <labels>
            <label mode="any"/>
          </labels>
        </widget>
    
        <widget name="header_description" type="textarea">
          <widgetModes>
            <mode value="any">
              #{currentDocument.folder==false or empty
              currentDocument.dublincore.description ?'hidden':mode}
            </mode>
          </widgetModes>
          <fields>
            <field>dc:description</field>
          </fields>
          <labels>
            <label mode="any"/>
          </labels>
          <properties mode="any">
            <property name="styleClass">
              currentDocumentDescription quote
            </property>
          </properties>
        </widget>
    
        <widget name="bulk_collections" type="multipleDocumentsSuggestion">
          <labels>
            <label mode="any">label.collections</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>contextData['bulk_collections']</field>
          </fields>
          <properties widgetMode="any">
            <property name="minChars">0</property>
            <property name="hideHelpLabel">true</property>
            <property name="restoreSeamCtx">false</property>
            <property name="placeholder">label.addToCollection.collection.placeHolder</property>
            <property name="operationId">Collection.Suggestion</property>
            <property name="selectionFormatter">formatSelectedCollection</property>
            <property name="suggestionFormatter">formatSuggestedCollection</property>
            <property name="documentSchemas">dublincore,common</property>
          </properties>
        </widget>
    
        <widget name="bulk_tags" type="select_tags">
          <labels>
            <label mode="any">label.search.tagSearch</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>contextData['bulk_tags']</field>
          </fields>
          <properties widgetMode="edit">
            <property name="canSelectNewTag">true</property>
            <property name="placeholder">
              #{messages['label.search.tags.placeholder']}
            </property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-core-2023.10.13.jar /OSGI-INF/layouts-summary-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="summary_current_document_description" type="summary_current_document_description">
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_actions" type="summary_current_document_actions">
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_custom_actions" type="summary_current_document_custom_actions">
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_files" type="summary_current_document_files">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_view" type="summary_current_document_view">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_tagging" type="summary_current_document_tagging">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
          <properties widgetMode="any">
            <property name="ajaxReRender">MultiTreeView</property>
            <property name="placeholder">
              #{messages['label.add.tag.placeholder']}
            </property>
          </properties>
        </widget>
    
        <widget name="summary_current_document_dublincore" type="summary_current_document_dublincore">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_relations" type="summary_current_document_relations">
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_comments" type="summary_current_document_comments">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_publications" type="summary_current_document_publications">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_lc_and_version" type="summary_current_document_lc_and_version">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_single_tasks" type="summary_current_document_single_tasks">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="requireSurroundingForm">false</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_indicators" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
          <properties widgetMode="view">
            <property name="category">SUMMARY_INDICATORS</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="styleClass">indicators</property>
          </properties>
        </widget>
    
        <widget name="summary_current_document_states" type="summary_current_document_states">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="summary_current_document_contributors" type="summary_current_document_contributors">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="summary_note_text" type="richtext_with_mimetype">
          <fields>
            <field>note:note</field>
            <field>note:mime_type</field>
          </fields>
          <properties mode="view">
            <property name="translatedHtml">
              #{noteActions.translateImageLinks(field_0)}
            </property>
            <property name="cssClass">note_content_block</property>
          </properties>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="summary_panel_top" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">SUMMARY_PANEL_TOP</property>
            <property name="styleClass">summaryActions</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="gridStyleClass">gridStyle12</control>
          </controls>
        </widget>
    
        <widget name="summary_panel_left" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">SUMMARY_PANEL_LEFT</property>
            <property name="styleClass">summaryActions</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="gridStyleClass">gridStyle8</control>
          </controls>
        </widget>
    
        <widget name="summary_panel_right" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">SUMMARY_PANEL_RIGHT</property>
            <property name="styleClass">summaryActions</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="gridStyleClass">gridStyle4</control>
          </controls>
        </widget>
    
        <widget name="summary_panel_bottom" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">SUMMARY_PANEL_BOTTOM</property>
            <property name="styleClass">summaryActions</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="gridStyleClass">gridStyle12</control>
          </controls>
        </widget>
    
      </extension>
  • nuxeo-platform-rendition-web-2023.10.13.jar /OSGI-INF/layouts-summary-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="summary_current_document_renditions" type="summary_current_document_renditions"/>
    
      </extension>
  • nuxeo-platform-audio-jsf-2023.10.13.jar /OSGI-INF/layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="summary_audio_player" type="audio_player">
          <fields>
            <field>#{value}</field>
            <field>file:content</field>
          </fields>
        </widget>
    
        <widget name="audioFile" type="audio_file">
          <labels>
            <label mode="any">label.file.content</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>file:content</field>
            <field>file:content/name</field>
          </fields>
        </widget>
    
        <widget name="infoViewAudioPlayer" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="styleClass">infoViewAudioContainer</property>
            <property name="display">block_top</property>
          </properties>
          <subWidgets>
            <widget name="audioPlayer" type="audio_player">
              <fields>
                <field>#{value}</field>
                <field>file:content</field>
              </fields>
            </widget>
          </subWidgets>
        </widget>
    
      </extension>
  • nuxeo-platform-imaging-jsf-2023.10.13.jar /OSGI-INF/imaging-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="imageFile" type="image">
          <labels>
            <label mode="any">label.file.content</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>file:content</field>
            <field>file:content/filename</field>
          </fields>
        </widget>
    
        <widget name="summary_picture_view" type="picture_view"/>
    
        <widget name="infoViewPictureView" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="styleClass">infoViewDocContainer</property>
            <property name="display">block_top</property>
          </properties>
          <subWidgets>
            <widget name="pictureView" type="picture_view"/>
          </subWidgets>
        </widget>
    
        <widget name="summary_picture_info_box" type="info_box"/>
    
        <widget name="picture_info_dimensions" type="dimensions">
          <labels>
            <label mode="any">label.widget.picture.dimensions</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>picture:info/width</field>
            <field>picture:info/height</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="picture_info_format" type="text">
          <labels>
            <label mode="any">label.widget.picture.format</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>picture:info/format</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="picture_info_colorspace" type="text">
          <labels>
            <label mode="any">label.widget.picture.colorSpace</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>picture:info/colorSpace</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="picture_info_depth" type="text">
          <labels>
            <label mode="any">label.widget.picture.depth</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>picture:info/depth</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="summary_picture_info" type="container">
          <labels>
            <label mode="any">label.header.picture.info</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="display">block_top</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
          <subWidgets>
            <widget name="picture_info" type="layout">
              <properties widgetMode="any">
                <property name="name">picture_info</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="summary_picture_exif" type="container">
          <labels>
            <label mode="any">label.header.info.exif</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="display">block_top</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
          <subWidgets>
            <widget name="exif_info" type="layout">
              <properties widgetMode="any">
                <property name="name">exif_info</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="summary_picture_iptc" type="container">
          <labels>
            <label mode="any">label.header.info.iptc</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="display">block_top</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
          <subWidgets>
            <widget name="iptc_info" type="layout">
              <properties widgetMode="any">
                <property name="name">iptc_info</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="summary_picture_additional_formats" type="picture_additional_formats">
          <labels>
            <label mode="any">label.header.picture.additional.formats</label>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
          <widgetModes>
            <mode value="any">#{not empty currentDocumentAsBlobHolder.blob ? 'view' : 'hidden'}</mode>
          </widgetModes>
        </widget>
    
        <widget name="summary_picture_actions" type="documentActionsWithForms">
          <properties widgetMode="view">
            <property name="category">IMAGE_PROCESSING</property>
            <property name="styleClass">grayBox pictureActions</property>
            <property name="actionStyleClass">button</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="useAjaxForm">true</property>
            <property name="ignoreTemplateProperty">true</property>
          </properties>
          <widgetModes>
            <mode value="any">#{not empty currentDocumentAsBlobHolder.blob ? 'view' : 'hidden'}</mode>
          </widgetModes>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-base-2023.10.13.jar /OSGI-INF/collection-layout-summary-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
        <widget name="summary_current_document_collections" type="summary_current_document_collections">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
      </extension>
  • nuxeo-platform-video-jsf-2023.10.13.jar /OSGI-INF/layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="summary_video_player" type="video_player">
          <properties widgetMode="any">
            <property name="width">100%</property>
            <property name="height">380</property>
          </properties>
        </widget>
    
        <widget name="summary_video_storyboard" type="video_storyboard">
          <labels>
            <label mode="any">heading.storyboard</label>
          </labels>
          <translated>true</translated>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
          <widgetModes>
            <mode value="any">#{not empty currentDocumentAsBlobHolder.blob ? 'view' : 'hidden'}</mode>
          </widgetModes>
        </widget>
    
        <widget name="summary_video_conversions" type="video_conversions">
          <labels>
            <label mode="any">heading.videoConversions</label>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
          <widgetModes>
            <mode value="any">#{not empty  currentDocumentAsBlobHolder.blob ? 'view' : 'hidden'}</mode>
          </widgetModes>
        </widget>
    
        <widget name="summary_video_info" type="video_info">
          <labels>
            <label mode="any">heading.video.info</label>
          </labels>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="video_info_duration" type="text">
          <labels>
            <label mode="any">label.widget.video.duration</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vid:info/duration</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="video_info_width" type="int">
          <labels>
            <label mode="any">label.widget.video.width</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vid:info/width</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="video_info_height" type="int">
          <labels>
            <label mode="any">label.widget.video.height</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vid:info/height</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="video_info_format" type="text">
          <labels>
            <label mode="any">label.widget.video.format</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vid:info/format</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="video_info_frameRate" type="text">
          <labels>
            <label mode="any">label.widget.video.frameRate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vid:info/frameRate</field>
          </fields>
          <widgetModes>
            <mode value="any">view</mode>
          </widgetModes>
        </widget>
    
        <widget name="video_info_streams" type="list">
          <labels>
            <label mode="any">label.widget.video.streams</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vid:info/streams</field>
          </fields>
          <properties widgetMode="edit">
            <property name="required">true</property>
          </properties>
          <subWidgets>
            <widget name="listItem" type="text">
              <fields>
                <field>streamInfo</field>
              </fields>
              <labels>
                <label mode="any"/>
              </labels>
              <widgetModes>
                <mode value="any">view</mode>
              </widgetModes>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="videoFile" type="video_file">
          <labels>
            <label mode="any">label.file.content</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>file:content</field>
            <field>file:content/name</field>
          </fields>
        </widget>
    
        <widget name="infoViewVideoPlayer" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="styleClass">infoViewDocContainer</property>
            <property name="display">block_top</property>
          </properties>
          <subWidgets>
            <widget name="videoPlayer" type="video_player">
              <properties widgetMode="any">
                <property name="width">100%</property>
                <property name="height">600</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
      </extension>
  • nuxeo-platform-webapp-core-2023.10.13.jar /OSGI-INF/directory-ui-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="vocabulary_id" type="text">
          <labels>
            <label mode="any">label.vocabulary.entry.id</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vocabulary:id</field>
          </fields>
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="required">true</property>
          </properties>
        </widget>
    
        <widget name="vocabulary_label" type="text">
          <labels>
            <label mode="any">label.vocabulary.entry.label</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vocabulary:label</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">50</property>
          </properties>
        </widget>
    
        <widget name="vocabulary_obsolete" type="template">
          <labels>
            <label mode="any">label.vocabulary.entry.obsolete</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vocabulary:obsolete</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /widgets/integer_yes_no_widget_template.xhtml
            </property>
          </properties>
        </widget>
    
        <widget name="vocabulary_order" type="int">
          <labels>
            <label mode="any">label.vocabulary.entry.order</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>vocabulary:ordering</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">10</property>
          </properties>
        </widget>
    
        <widget name="xvocabulary_id" type="text">
          <labels>
            <label mode="any">label.vocabulary.entry.id</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>xvocabulary:id</field>
          </fields>
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="required">true</property>
          </properties>
        </widget>
    
        <widget name="xvocabulary_label" type="text">
          <labels>
            <label mode="any">label.vocabulary.entry.label</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>xvocabulary:label</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">50</property>
          </properties>
        </widget>
    
        <widget name="xvocabulary_obsolete" type="template">
          <labels>
            <label mode="any">label.vocabulary.entry.obsolete</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>xvocabulary:obsolete</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /widgets/integer_yes_no_widget_template.xhtml
            </property>
          </properties>
        </widget>
    
        <widget name="xvocabulary_order" type="int">
          <labels>
            <label mode="any">label.vocabulary.entry.order</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>xvocabulary:ordering</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">10</property>
          </properties>
        </widget>
    
        <widget name="l10nvocabulary_id" type="text">
          <labels>
            <label mode="any">label.vocabulary.entry.id</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nvocabulary:id</field>
          </fields>
          continent
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="required">true</property>
          </properties>
        </widget>
    
        <widget name="l10nvocabulary_label_fr" type="text">
          <labels>
            <label mode="any">label.vocabulary.l10n.entry.label.french</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nvocabulary:label_fr</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">50</property>
          </properties>
        </widget>
    
        <widget name="l10nvocabulary_label_en" type="text">
          <labels>
            <label mode="any">label.vocabulary.l10n.entry.label.english</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nvocabulary:label_en</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">50</property>
          </properties>
        </widget>
    
        <widget name="l10nvocabulary_obsolete" type="template">
          <labels>
            <label mode="any">label.vocabulary.entry.obsolete</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nvocabulary:obsolete</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /widgets/integer_yes_no_widget_template.xhtml
            </property>
          </properties>
        </widget>
    
        <widget name="l10nvocabulary_order" type="int">
          <labels>
            <label mode="any">label.vocabulary.entry.order</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nvocabulary:ordering</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">10</property>
          </properties>
        </widget>
    
        <widget name="l10nxvocabulary_id" type="text">
          <labels>
            <label mode="any">label.vocabulary.entry.id</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nxvocabulary:id</field>
          </fields>
          <widgetModes>
            <mode value="edit">view</mode>
          </widgetModes>
          <properties widgetMode="edit">
            <property name="required">true</property>
          </properties>
        </widget>
    
        <widget name="l10nxvocabulary_label_fr" type="text">
          <labels>
            <label mode="any">label.vocabulary.l10n.entry.label.french</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nxvocabulary:label_fr</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">50</property>
          </properties>
        </widget>
    
        <widget name="l10nxvocabulary_label_en" type="text">
          <labels>
            <label mode="any">label.vocabulary.l10n.entry.label.english</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nxvocabulary:label_en</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">50</property>
          </properties>
        </widget>
    
        <widget name="l10nxvocabulary_obsolete" type="template">
          <labels>
            <label mode="any">label.vocabulary.entry.obsolete</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nxvocabulary:obsolete</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /widgets/integer_yes_no_widget_template.xhtml
            </property>
          </properties>
        </widget>
    
        <widget name="l10nxvocabulary_order" type="int">
          <labels>
            <label mode="any">label.vocabulary.entry.order</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>l10nxvocabulary:ordering</field>
          </fields>
          <properties widgetMode="edit">
            <property name="size">10</property>
          </properties>
        </widget>
    
    
      </extension>
  • nuxeo-platform-webapp-core-2023.10.13.jar /OSGI-INF/info-view-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="infoViewPanelLeft" type="documentActions">
          <properties widgetMode="view">
            <property name="category">INFO_VIEW_PANEL_LEFT</property>
          </properties>
          <controls mode="any">
            <control name="requireSurroundingForm">false</control>
            <control name="gridStyleClass">
              gridStyle8 infoViewLeft
            </control>
          </controls>
        </widget>
    
        <widget name="infoViewPanelRight" type="documentActions">
          <properties widgetMode="view">
            <property name="category">INFO_VIEW_PANEL_RIGHT</property>
          </properties>
          <controls mode="any">
            <control name="requireSurroundingForm">false</control>
            <control name="gridStyleClass">
              gridStyle4 compactLayout infoViewRight
            </control>
          </controls>
        </widget>
    
        <widget name="infoViewPreview" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="styleClass">infoViewDocContainer</property>
            <property name="display">block_top</property>
          </properties>
          <subWidgets>
            <widget name="preview" type="documentPreview">
              <properties widgetMode="view">
                <property name="width">100%</property>
                <property name="height">600px</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="infoViewNote" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="styleClass">infoViewDocContainer</property>
            <property name="display">block_top</property>
          </properties>
          <subWidgetRefs>
            <widget>summary_note_text</widget>
          </subWidgetRefs>
        </widget>
    
        <widget name="infoViewNoPreview" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="styleClass">infoViewDocContainer</property>
            <property name="display">block_top</property>
          </properties>
          <subWidgets>
            <widget name="noPreview" type="template">
              <properties mode="any">
                <property name="template">
                  /widgets/info_view_no_preview_widget.xhtml
                </property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="infoViewTitleContainer" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="styleClass">infoViewTitle</property>
            <property name="display">block_top</property>
          </properties>
          <subWidgets>
            <widget name="infoViewTitle" type="title_link">
              <fields>
                <field/>
                <field>ref</field>
                <field>dc.description</field>
              </fields>
              <properties mode="any">
                <property name="target">_top</property>
                <property name="hideExternalLink">true</property>
                <property name="hideDownloadLink">true</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="infoViewInfoLayoutContainer" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="styleClass">infoViewInfoLayout</property>
            <property name="display">block_top</property>
          </properties>
          <subWidgets>
            <widget name="infoViewInfoLayout" type="documentLayout">
              <properties widgetMode="view">
                <property name="mode">view</property>
                <property name="documentMode">info</property>
                <property name="defaultLayout">defaultInfoLayout@tabLayout</property>
                <property name="includeAnyMode">false</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="infoViewActions" type="documentActionsWithForms">
          <properties widgetMode="view">
            <property name="category">INFO_VIEW_ACTIONS</property>
            <property name="styleClass">globalActionBar infoViewActions</property>
            <property name="subStyleClass">contextActions</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="actionsDisplay">icons</property>
            <property name="useAjaxForm">true</property>
            <property name="ignoreTemplateProperty">true</property>
            <property name="maxActionsNumber">5</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-routing-web-2023.10.13.jar /OSGI-INF/document-routing-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
        <widget name="summary_current_route_action" type="summary_current_route_action"/>
        <widget name="summary_document_route_action" type="summary_document_route_action"/>
        <widget name="summary_current_route_actions_lock" type="summary_current_route_actions_lock"/>
    
        <widget name="participatingDocuments" type="template">
          <labels>
            <label mode="any">label.document.routing.participatingDocuments
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>docri:participatingDocuments</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /document_routing_widgets/document_suggestion_widget_template.xhtml
            </property>
          </properties>
          <properties widgetMode="edit">
            <property name="cssStyleClass">dataInputText</property>
          </properties>
        </widget>
    
        <!--since 5.9.2, use only routes of type 'graph'  -->
        <widget name="execution_type" type="selectOneDirectory">
          <fields>
            <field>stepf:execution</field>
          </fields>
          <labels>
            <label mode="any">label.step.folder.execution.type</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="edit">
            <property name="required">true</property>
          </properties>
          <properties widgetMode="any">
            <property name="directoryName">execution_type</property>
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="document_related_route" type="template">
          <labels>
            <label mode="any">label.document.routing.related.route</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>relatedRouteModelDocumentId</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /document_routing_widgets/routing_combobox_widget_template.xhtml
            </property>
          </properties>
          <properties widgetMode="edit">
            <property name="cssStyleClass">dataInputText</property>
          </properties>
        </widget>
    
        <!-- @deprecated since 5.9.2 - Use only routes of type 'graph'-->
        <widget name="conditional_step_value" type="template">
          <translated>true</translated>
          <fields>
            <field>condstepf:posOfChildStepToRunNext</field>
          </fields>
          <properties mode="any">
            <property name="required">true</property>
            <property name="template">
              /document_routing_widgets/conditional_folder_options_widget_template.xhtml
            </property>
          </properties>
        </widget>
        <widget name="listing_title_link_localized" type="listing_title_link">
          <labels>
            <label mode="any">label.content.header.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
            <field>data.ref</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
        <widget name="header_title_and_permlink_localized" type="title_and_permlink">
          <fields>
            <field/>
          </fields>
          <labels>
            <label mode="any"/>
          </labels>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
      </extension>
  • nuxeo-routing-dashboard-2023.10.13.jar /OSGI-INF/document-routing-dashboard-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <!-- Listing widgets -->
        <widget name="routing_task_name" type="text">
          <labels>
            <label mode="any">label.workflow.task.name</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.nt.name</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="routing_task_target_document" type="multipleDocumentsSuggestion">
          <labels>
            <label mode="any">label.document</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.nt.targetDocumentsIds</field>
          </fields>
        </widget>
    
        <widget name="routing_task_duedate" type="datetime">
          <labels>
            <label mode="any">label.widget.task_step.dueDate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.nt.dueDate</field>
          </fields>
          <properties mode="any">
            <property name="format">#{nxu:dateAndTimeFormatter('medium')}
            </property>
            <property name="timeZone">#{timeZone}</property>
          </properties>
        </widget>
    
        <widget name="routing_task_directive" type="text">
          <labels>
            <label mode="any">label.widget.task_step.directive</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.nt.directive</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="routing_task_actors" type="multiplePrefixedUsersSuggestion">
          <labels>
            <label mode="any">label.document.route.content.header.actors
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.nt.actors</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="routing_task_comments" type="list">
          <labels>
            <label mode="any">label.content.header.comments</label>
          </labels>
          <fields>
            <field>data.nt.taskComments</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="comment" type="text">
              <fields>
                <field/>
              </fields>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="routing_task_workflow_name" type="listing_workflow_name_task">
          <labels>
            <label mode="any">label.review.type</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.nt.processId</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
    
        <widget name="routing_task_process_btn" type="listing_process_task">
          <labels>
            <label mode="any"/>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
            <field>data.nt.targetDocumentsIds</field>
          </fields>
          <properties mode="any">
            <property name="tab">TAB_ROUTE_WORKFLOW</property>
          </properties>
        </widget>
        <!-- Listing widgets -->
    
        <widget name="workflowTabs" type="tabs">
          <properties mode="view">
            <property name="actionsDisplay">links</property>
            <property name="addForm">true</property>
            <property name="useAjaxForm">false</property>
            <property name="category">WORKFLOW_DASHBOARD</property>
            <property name="actions">#{webActions.getActionsList('WORKFLOW_DASHBOARD')}</property>
            <property name="currentTabAction">#{webActions.getCurrentTabAction('WORKFLOW_DASHBOARD')}</property>
            <property name="overallDisplay">horizontal_block</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-routing-web-2023.10.13.jar /OSGI-INF/document-routing-table-widgets-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="dr_listing_document_route_folder_element_type" type="listing_document_route_folder_element_type">
          <labels>
            <label mode="any">label.document.route.content.header.type
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>routeElement.document</field>
            <field>routeElement.document.id</field>
            <field>routeElement.document.hasFacet('Folderish')</field>
          </fields>
          <properties mode="any">
            <property name="showAvailableActionsOnRouteElement">false</property>
          </properties>
        </widget>
    
        <widget name="dr_listing_document_route_element_type" type="listing_document_route_element_type">
          <labels>
            <label mode="any">label.document.route.content.header.type
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.document</field>
            <field>data.document.type</field>
          </fields>
        </widget>
    
        <widget name="dr_listing_title_link" type="listing_route_title_link">
          <labels>
            <label mode="any">label.content.header.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.document</field>
            <field>data.document.id</field>
            <field>data.document.title</field>
          </fields>
        </widget>
    
        <widget name="dr_listing_route_element_state" type="listing_document_route_element_state">
          <translated>true</translated>
          <labels>
            <label mode="any">label.widget.document_routing_route_content.dr_listing_route_element_state
            </label>
          </labels>
          <fields>
            <field>data.document.currentLifeCycleState</field>
          </fields>
        </widget>
    
        <widget name="dr_listing_title_description" type="text">
          <labels>
            <label mode="any">label.content.header.description</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.document.dc.description</field>
          </fields>
        </widget>
    
        <widget name="dr_listing__edit_document_route_element" type="listing_edit_document_route_element">
          <labels>
            <label mode="any">label.document.route.content.header.update
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.document</field>
            <field>data.document.id</field>
          </fields>
        </widget>
    
        <widget name="dr_listing_title" type="text">
          <labels>
            <label mode="any">label.content.header.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.document.dc.title</field>
          </fields>
        </widget>
    
        <widget name="dr_listing_current_lifecycle" type="text">
          <labels>
            <label mode="any">label.content.header.currentLifecycleState
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.document.currentLifeCycleState</field>
          </fields>
        </widget>
    
        <widget name="dr_listing_no_comments" type="listing_no_comments">
          <labels>
            <label mode="any">label.content.header.comments</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.document</field>
            <field>data.document.hasFacet('CommentsInfoHolder')</field>
            <field>data.document.infocom.numberOfComments</field>
          </fields>
        </widget>
    
        <widget name="dr_listing_step_actions" type="step_actions">
          <translated>true</translated>
          <fields>
            <field>data.document</field>
            <field>data.document.id</field>
            <field>data.document.hasFacet('Folderish')</field>
          </fields>
        </widget>
    
      </extension>
  • nuxeo-routing-web-2023.10.13.jar /OSGI-INF/layouts-summary-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="summary_document_route" type="summary_document_route">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="start_route_widget" type="template">
          <labels>
            <label mode="any"/>
          </labels>
          <translated>true</translated>
          <fields>
            <field>relatedRouteModelDocumentId</field>
          </fields>
          <properties mode="any">
            <property name="template">
              /widgets/start_route_widget_template.xhtml
            </property>
          </properties>
          <properties widgetMode="edit">
            <property name="cssStyleClass">dataInputText</property>
          </properties>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <control name="disableMultiPartForm">true</control>
          </controls>
        </widget>
    
      </extension>
  • nuxeo-routing-web-2023.10.13.jar /OSGI-INF/layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="current_route_description" type="current_route_description"/>
        <widget name="current_route_show_graph" type="current_route_show_graph">
          <fields>
            <field>#{layoutValue.document.id}
            </field>
          </fields>
          <handlingLabels>true</handlingLabels>
        </widget>
        <widget name="current_route_abandon" type="current_route_abandon">
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
        <widget name="current_route_user_tasks" type="current_route_user_tasks">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="displayTaskAdditionalActions">true</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="requireSurroundingForm">false</control>
          </controls>
        </widget>
        <widget name="current_route_open_tasks" type="current_route_open_tasks">
          <labels>
            <label mode="any"/>
          </labels>
          <controls mode="any">
            <control name="handleLabels">true</control>
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="current_route_previous_tasks" type="contentViewWithForms">
          <labels>
            <label mode="any"/>
          </labels>
          <translated>false</translated>
          <properties widgetMode="any">
            <property name="contentViewName">route_past_steps</property>
          </properties>
        </widget>
    
        <widget name="current_route_panel_top" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">CURRENT_ROUTE_PANEL_TOP</property>
            <property name="styleClass">summaryActions</property>
            <property name="actionContextDocument">#{layout.properties.currentDocumentForRoute}</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="current_route_panel_left" type="container">
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
            <property name="display">block_top</property>
            <property name="ajaxPanelId">currentRoutePanelLeft</property>
          </properties>
          <subWidgetRefs>
            <widget>current_route_tasks</widget>
          </subWidgetRefs>
        </widget>
    
        <widget name="current_route_tasks" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">CURRENT_ROUTE_PANEL_LEFT</property>
            <property name="styleClass">summaryActions</property>
            <property name="actionContextDocument">#{layout.properties.currentDocumentForRoute}</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="current_route_panel_right" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">CURRENT_ROUTE_PANEL_RIGHT</property>
            <property name="styleClass">summaryActions</property>
            <property name="actionContextDocument">#{layout.properties.currentDocumentForRoute}</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <widget name="current_route_panel_bottom" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">CURRENT_ROUTE_PANEL_BOTTOM</property>
            <property name="styleClass">summaryActions</property>
            <property name="actionContextDocument">#{layout.properties.currentDocumentForRoute}</property>
          </properties>
          <controls mode="any">
            <control name="handleLabels">true</control>
          </controls>
        </widget>
    
        <!-- for previous tasks layout -->
        <widget name="task_title" type="text">
          <labels>
            <label mode="any">label.workflow.task.Name</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.task.name</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
        <widget name="task_directive" type="text">
          <labels>
            <label mode="any">label.workflow.task.directive</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.task.directive</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
        <widget name="task_assignee" type="multiplePrefixedUsersSuggestion">
          <labels>
            <label mode="any">label.document.route.content.header.actors
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.task.actors</field>
          </fields>
        </widget>
        <widget name="task_comments" type="list">
          <labels>
            <label mode="any">label.content.header.comments</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.task.taskComments</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="comment" type="text">
              <fields>
                <field>text</field>
              </fields>
            </widget>
          </subWidgets>
        </widget>
        <widget name="task_start_date" type="datetime">
          <labels>
            <label mode="any">label.workflow.task.startdate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dublincore.created</field>
          </fields>
        </widget>
        <widget name="task_due_date" type="datetime">
          <labels>
            <label mode="any">label.workflow.task.duedate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.task.dueDate</field>
          </fields>
        </widget>
    
        <!-- for "task_layout" @since 5.8, apply to an object Task -->
        <widget name="task_workflow_title" type="task_workflow_title">
          <labels>
            <label mode="any">label.route.task.workflowStep</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field/>
            <field>name</field>
          </fields>
        </widget>
        <widget name="task_workflow_name" type="task_workflow_name">
          <labels>
            <label mode="any">label.route.task.workflowStep</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field/>
            <field>name</field>
          </fields>
        </widget>
        <widget name="task_show_workflow_graph" type="current_route_show_graph">
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field>processId</field>
          </fields>
        </widget>
        <widget name="task_actors" type="multiplePrefixedUsersSuggestion">
          <labels>
            <label mode="any">label.document.route.content.header.actors
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>actors</field>
          </fields>
        </widget>
        <widget name="task_duedate" type="datetime">
          <labels>
            <label mode="any">label.workflow.task.duedate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>dueDate</field>
          </fields>
        </widget>
        <widget name="task_simple_directive" type="text">
          <labels>
            <label mode="any">label.workflow.task.directive</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>directive</field>
          </fields>
          <properties mode="any">
            <property name="localize">true</property>
          </properties>
        </widget>
        <widget name="task_delegated_users" type="multiplePrefixedUsersSuggestion">
          <labels>
            <label mode="any">label.route.task.delegated.to</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>delegatedActors</field>
          </fields>
        </widget>
        <widget name="task_layout_with_actions" type="task_layout_with_actions">
          <labels>
            <label mode="any"/>
          </labels>
          <fields>
            <field/>
            <field>id</field>
          </fields>
        </widget>
    
        <widget name="reassign_task_widget" type="action">
          <properties widgetMode="any">
            <property name="action">#{webActions.getActionForDocument("reassignTask",null,
              false)}
            </property>
            <property name="styleClass">floatL</property>
            <property name="actionStyleClass">button</property>
            <property name="actionsDisplay">buttons</property>
            <property name="addForm">true</property>
            <property name="useAjaxForm">true</property>
            <property name="ignoreTemplateProperty">true</property>
          </properties>
          <widgetModes>
            <mode value="any">#{layoutValue.isCanBeReassigned()?'edit':'hidden'}
            </mode>
          </widgetModes>
        </widget>
    
        <widget name="delegate_task_widget" type="action">
          <properties widgetMode="any">
            <property name="action">#{webActions.getActionForDocument("delegateTask",null,
              false)}
            </property>
            <property name="styleClass">floatL</property>
            <property name="actionStyleClass">button</property>
            <property name="actionsDisplay">buttons</property>
            <property name="addForm">true</property>
            <property name="useAjaxForm">true</property>
            <property name="ignoreTemplateProperty">true</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-search-ui-2023.10.13.jar /OSGI-INF/search-contentviews-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <!-- widgets for default_search -->
    
        <widget name="default_text_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.search.textSearch</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="ecm_fulltext" type="text">
              <fields>
                <field>defaults:ecm_fulltext</field>
              </fields>
              <properties widgetMode="edit">
                <property name="placeholder">
                  #{messages['label.search.text.placeholder']}
                </property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_modified_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.dublincore.modificationDate</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="dc_modificationDate" type="datetimeRange">
              <fields>
                <field>defaults:dc_modified_min</field>
                <field>defaults:dc_modified_max</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'hidden' : 'edit'}</mode>
              </widgetModes>
              <properties widgetMode="edit">
                <property name="styleClass">dataInputTextDate</property>
                <property name="format">#{nxu:basicDateAndTimeFormatter()}</property>
              </properties>
            </widget>
            <widget name="dc_modified_agg" type="selectManyCheckboxDateRangeAggregate">
              <fields>
                <field>defaults:dc_modified_agg</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'edit' : 'hidden'}</mode>
              </widgetModes>
              <properties widgetMode="any">
                <property name="selectOptions">#{contentView.pageProvider.aggregates['dc_modified_agg'].extendedBuckets}</property>
                <property name="localize">true</property>
              </properties>
              <selectOptions>
                <option itemLabel="label.aggregate.modified.last24h" itemValue="last24h"/>
                <option itemLabel="label.aggregate.modified.lastWeek" itemValue="lastWeek"/>
                <option itemLabel="label.aggregate.modified.lastMonth" itemValue="lastMonth"/>
                <option itemLabel="label.aggregate.modified.lastYear" itemValue="lastYear"/>
                <option itemLabel="label.aggregate.modified.priorToLastYear" itemValue="priorToLastYear"/>
              </selectOptions>
              <controls mode="any">
                <control name="supportInsideInputWidgetEffects">true</control>
              </controls>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_creator_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.dublincore.creator</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="dc_creator" type="multipleUsersSuggestion">
              <fields>
                <field>defaults:dc_creator</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'hidden' : 'edit'}</mode>
              </widgetModes>
              <properties widgetMode="edit">
                <property name="searchType">USER_TYPE</property>
                <property name="minChars">3</property>
                <property name="hideHelpLabel">true</property>
              </properties>
            </widget>
            <widget name="dc_creator_agg" type="selectManyListboxUserAggregate">
              <fields>
                <field>defaults:dc_creator_agg</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'edit' : 'hidden'}</mode>
              </widgetModes>
              <properties widgetMode="edit">
                <property name="selectOptions">#{contentView.pageProvider.aggregates['dc_creator_agg'].extendedBuckets}</property>
              </properties>
              <controls mode="any">
                <control name="supportInsideInputWidgetEffects">true</control>
              </controls>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_collection_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.collections</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="visible_collection" type="multipleDocumentsSuggestion">
              <fields>
                <field>defaults:ecm_collections</field>
              </fields>
              <properties widgetMode="any">
                <property name="minChars">0</property>
                <property name="hideHelpLabel">true</property>
                <property name="pageProviderName">default_collection</property>
                <property name="suggestionFormatter">docSelectionDefaultFormatter</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_nature_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.dublincore.nature</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="dc_nature" type="suggestManyDirectory">
              <fields>
                <field>defaults:dc_nature</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'hidden' : 'edit'}</mode>
              </widgetModes>
              <properties widgetMode="any">
                <property name="width">100%</property>
                <property name="minChars">0</property>
                <property name="hideHelpLabel">true</property>
                <property name="directoryName">nature</property>
                <property name="localize">true</property>
              </properties>
            </widget>
            <widget name="dc_nature_agg" type="selectManyCheckboxDirectoryAggregate">
              <fields>
                <field>defaults:dc_nature_agg</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'edit' : 'hidden'}</mode>
              </widgetModes>
              <properties widgetMode="any">
                <property name="directoryName">nature</property>
                <property name="selectOptions">#{contentView.pageProvider.aggregates['dc_nature_agg'].extendedBuckets}</property>
                <property name="localize">true</property>
              </properties>
              <controls mode="any">
                <control name="supportInsideInputWidgetEffects">true</control>
              </controls>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_subjects_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.dublincore.subject</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="dc_subjects" type="suggestManyDirectory">
              <fields>
                <field>defaults:dc_subjects</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'hidden' : 'edit'}</mode>
              </widgetModes>
              <properties widgetMode="any">
                <property name="directoryName">l10nsubjects</property>
                <property name="dbl10n">true</property>
                <property name="minChars">0</property>
                <property name="hideHelpLabel">true</property>
                <property name="filterParent">true</property>
                <property name="canSelectParent">true</property>
              </properties>
            </widget>
            <widget name="dc_subjects_agg" type="selectManyCheckboxDirectoryAggregate">
              <fields>
                <field>defaults:dc_subjects_agg</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'edit' : 'hidden'}</mode>
              </widgetModes>
              <properties widgetMode="any">
                <property name="directoryName">l10nsubjects</property>
                <property name="selectOptions">#{contentView.pageProvider.aggregates['dc_subjects_agg'].extendedBuckets}</property>
                <property name="dbl10n">true</property>
                <property name="localize">true</property>
              </properties>
              <controls mode="any">
                <control name="supportInsideInputWidgetEffects">true</control>
              </controls>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_coverage_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.dublincore.coverage</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="dc_coverage" type="suggestManyDirectory">
              <fields>
                <field>defaults:dc_coverage</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'hidden' : 'edit'}</mode>
              </widgetModes>
              <properties widgetMode="any">
                <property name="directoryName">l10ncoverage</property>
                <property name="dbl10n">true</property>
                <property name="minChars">0</property>
                <property name="hideHelpLabel">true</property>
                <property name="filterParent">true</property>
                <property name="canSelectParent">true</property>
              </properties>
            </widget>
            <widget name="dc_coverage_agg" type="selectManyCheckboxDirectoryAggregate">
              <fields>
                <field>defaults:dc_coverage_agg</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'edit' : 'hidden'}</mode>
              </widgetModes>
              <properties widgetMode="any">
                <property name="directoryName">l10ncoverage</property>
                <property name="selectOptions">#{contentView.pageProvider.aggregates['dc_coverage_agg'].extendedBuckets}</property>
                <property name="dbl10n">true</property>
                <property name="localize">true</property>
              </properties>
              <controls mode="any">
                <control name="supportInsideInputWidgetEffects">true</control>
              </controls>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_size_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.common.size</label>
          </labels>
          <translated>true</translated>
          <widgetModes>
            <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
              'edit' : 'hidden'}</mode>
          </widgetModes>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="common_size_agg" type="selectManyCheckboxRangeAggregate">
              <fields>
                <field>defaults:common_size_agg</field>
              </fields>
              <widgetModes>
                <mode value="edit">#{contentView.pageProvider.hasAggregateSupport() ?
                  'edit' : 'hidden'}</mode>
              </widgetModes>
              <properties widgetMode="any">
                <property name="selectOptions">#{contentView.pageProvider.aggregates['common_size_agg'].extendedBuckets}</property>
                <property name="localize">true</property>
              </properties>
              <selectOptions>
                <option itemLabel="label.aggregate.size.tiny" itemValue="tiny"/>
                <option itemLabel="label.aggregate.size.small" itemValue="small"/>
                <option itemLabel="label.aggregate.size.medium" itemValue="medium"/>
                <option itemLabel="label.aggregate.size.big" itemValue="big"/>
                <option itemLabel="label.aggregate.size.huge" itemValue="huge"/>
              </selectOptions>
              <controls mode="any">
                <control name="supportInsideInputWidgetEffects">true</control>
              </controls>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_location_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.search.locationSearch</label>
          </labels>
          <translated>true</translated>
          <subWidgets>
            <widget name="ecm_path" type="select_path_tree">
              <labels>
                <label mode="any">label.search.path</label>
              </labels>
              <translated>true</translated>
              <fields>
                <field>defaults:ecm_path</field>
              </fields>
              <properties widgetMode="any">
                <property name="showAllDomains">true</property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="default_tags_search" type="container">
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">label.search.tagSearch</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgets>
            <widget name="tags" type="select_tags">
              <labels>
                <label mode="any"/>
              </labels>
              <translated>true</translated>
              <fields>
                <field>defaults:ecm_tags</field>
              </fields>
              <properties widgetMode="edit">
                <property name="placeholder">
                  #{messages['label.search.tags.placeholder']}
                </property>
              </properties>
            </widget>
          </subWidgets>
        </widget>
    
        <widget name="listing_size_and_format" type="container">
          <labels>
            <label mode="any">label.search.size_and_format</label>
          </labels>
          <properties widgetMode="view">
            <property name="display">inline</property>
            <property name="hideSubLabels">true</property>
          </properties>
          <subWidgetRefs>
            <widget>listing_size</widget>
            <widget>listing_main_file_format</widget>
          </subWidgetRefs>
        </widget>
    
        <widget name="listing_size" type="listing_main_file_size">
          <labels>
            <label mode="any"/>
          </labels>
          <translated>false</translated>
          <fields>
            <field>data</field>
          </fields>
        </widget>
    
        <widget name="listing_main_file_format" type="listing_main_file_format">
          <labels>
            <label mode="any"/>
          </labels>
          <translated>false</translated>
          <fields>
            <field>data</field>
          </fields>
        </widget>
    
        <widget name="content_view_selected_columns" type="layout">
          <labels>
            <label mode="any">label.search.results</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>cvd:selectedLayoutColumns</field>
          </fields>
          <properties widgetMode="edit">
            <property name="name">search_listing_ajax</property>
            <property name="mode">edit_columns</property>
            <property name="selectAllByDefault">true</property>
            <property name="required">true</property>
          </properties>
          <widgetModes>
            <mode value="view">hidden</mode>
          </widgetModes>
        </widget>
    
        <widget name="content_view_sort_infos" type="layout">
          <labels>
            <label mode="any">label.search.orderBy</label>
          </labels>
          <fields>
            <field>cvd:sortInfos</field>
          </fields>
          <translated>true</translated>
          <properties widgetMode="edit">
            <property name="name">search_listing_ajax</property>
            <property name="mode">edit_sort_infos_map</property>
            <property name="selectAllByDefault">true</property>
            <property name="required">false</property>
            <property name="newSortInfoTemplate">#{documentSearchActions.newSortInfoMap}</property>
          </properties>
          <widgetModes>
            <mode value="view">hidden</mode>
          </widgetModes>
        </widget>
    
      </extension>
  • nuxeo-search-ui-2023.10.13.jar /OSGI-INF/search-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <!-- Grid layout widgets -->
    
        <widget name="searchPanelLeft" type="container">
          <properties widgetMode="view">
            <property name="display">block_top</property>
            <property name="hideSubLabels">true</property>
            <property name="ajaxPanelId">searchPanelLeft</property>
          </properties>
          <subWidgetRefs>
            <widget>searchForm</widget>
          </subWidgetRefs>
          <controls mode="any">
            <control name="gridStyleClass">
              gridStyle2 compactLayout nxSearchForm
            </control>
          </controls>
        </widget>
    
        <widget name="searchPanelRight" type="container">
          <properties widgetMode="view">
            <property name="display">block_top</property>
            <property name="hideSubLabels">true</property>
            <property name="ajaxPanelId">searchPanelRight</property>
          </properties>
          <subWidgetRefs>
            <widget>searchResults</widget>
          </subWidgetRefs>
          <controls mode="any">
            <control name="gridStyleClass">
              gridStyle6 nxSearchResults
            </control>
          </controls>
        </widget>
    
        <!-- End of Grid layout widgets -->
    
        <!-- Main actions widgets -->
    
        <widget name="searchForm" type="documentActions">
          <properties widgetMode="view">
            <property name="category">SEARCH_PANEL_LEFT</property>
          </properties>
        </widget>
    
        <widget name="searchResults" type="documentActions">
          <properties widgetMode="view">
            <property name="category">SEARCH_PANEL_RIGHT</property>
          </properties>
          <controls mode="any">
            <control name="requireSurroundingForm">false</control>
          </controls>
        </widget>
    
        <!-- End of Main actions widgets -->
    
        <!-- Search form widgets -->
    
        <widget name="searchesSelector" type="template">
          <properties widgetMode="any">
            <property name="template">
              /search/widgets/searches_selector_widget_template.xhtml
            </property>
            <property name="ajaxReRender">
              searchPanelLeft searchPanelRight
            </property>
          </properties>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="searchLayout" type="container">
          <handlingLabels>false</handlingLabels>
          <properties widgetMode="any">
            <property name="hideSubLabels">true</property>
          </properties>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
            <property name="useAjaxForm">true</property>
          </controls>
          <subWidgetRefs>
            <widget>searchActions</widget>
            <widget>searchFilters</widget>
            <widget>searchActions</widget>
          </subWidgetRefs>
        </widget>
    
        <widget name="searchFilters" type="contentViewSearchLayout">
          <properties widgetMode="any">
            <property name="contentViewName">#{searchUIActions.currentContentViewName}</property>
            <property name="ajaxReRender">searchPanelRight</property>
          </properties>
        </widget>
    
        <widget name="searchActions" type="documentActions">
          <properties widgetMode="any">
            <property name="category">SEARCH_FILTER_ACTIONS</property>
            <property name="actionsDisplay">buttons</property>
            <property name="actionStyleClass">button</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="hideSubLabels">true</property>
            <property name="styleClass">searchFilterActions</property>
          </properties>
        </widget>
    
        <!-- End of Search form widgets -->
    
        <!-- Search results widgets -->
    
        <widget name="searchViewTitle" type="search_view_title"/>
    
        <widget name="searchResultsActions" type="documentActionsWithForms">
          <properties widgetMode="view">
            <property name="category">SEARCH_RESULTS_ACTIONS</property>
            <property name="styleClass">globalActionBar</property>
            <property name="overallDisplay">horizontal_block</property>
            <property name="actionStyleClass">button</property>
            <property name="actionsDisplay">buttons</property>
            <property name="useAjaxForm">true</property>
            <property name="ignoreTemplateProperty">true</property>
            <property name="maxActionsNumber">3</property>
          </properties>
        </widget>
    
        <widget name="searchNxqlInput" type="template">
          <properties widgetMode="any">
            <property name="template">
              /search/widgets/search_nxql_input_widget_template.xhtml
            </property>
            <property name="ajaxReRender">
              searchPanelRight
            </property>
          </properties>
          <controls mode="any">
            <control name="requireSurroundingForm">true</control>
          </controls>
        </widget>
    
        <widget name="searchContentView" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">#{searchUIActions.currentContentViewName}</property>
            <property name="showFilterForm">false</property>
            <property name="useAjaxForm">true</property>
            <property name="useAjaxPagination">true</property>
            <property name="styleClass">alignL</property>
          </properties>
        </widget>
    
        <!-- End of Search results widgets -->
    
      </extension>
  • nuxeo-search-ui-2023.10.13.jar /OSGI-INF/search-local-configuration-layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="search_content_views_selection" type="shuttle">
          <labels>
            <label mode="any">
              label.search.local.configuration.content.view.selection.label
            </label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>searchc:allowedContentViews</field>
          </fields>
          <properties mode="any">
            <property name="availableElementsLabel">
              label.search.local.configuration.content.view.selection.available
            </property>
            <property name="selectedElementsLabel">
              label.search.local.configuration.content.view.selection.enable
            </property>
            <property name="sourceItems">
              #{searchUIConfigurationActions.getNotSelectedContentViewHeaders(layoutValue)}
            </property>
            <property name="sourceItemVar">contentViewHeader</property>
            <property name="sourceItemValue">#{contentViewHeader.name}</property>
            <property name="sourceItemLabel">
              #{contentViewHeader.translateTitle ?
              messages[contentViewHeader.title] : contentViewHeader.title}
            </property>
            <property name="sourceItemOrdering">label</property>
            <property name="sourceItemCaseSensitive">true</property>
            <property name="targetItems">
              #{searchUIConfigurationActions.getSelectedContentViewHeaders(layoutValue)}
            </property>
            <property name="targetItemVar">contentViewHeader</property>
            <property name="targetItemValue">#{contentViewHeader.name}</property>
            <property name="targetItemLabel">
              #{contentViewHeader.translateTitle ?
              messages[contentViewHeader.title] : contentViewHeader.title}
            </property>
          </properties>
        </widget>
      </extension>
  • nuxeo-user-center-2023.10.13.jar /OSGI-INF/action-widgets-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="homeTabs" type="tabs">
          <properties mode="view">
            <property name="actionsDisplay">links</property>
            <property name="addForm">true</property>
            <property name="useAjaxForm">#{useAjaxTabs}</property>
            <property name="category">USER_CENTER</property>
            <property name="actions">#{userCenterViews.availableActions}</property>
            <property name="currentTabAction">#{userCenterViews.currentView}</property>
            <property name="overallDisplay">vertical_block</property>
          </properties>
        </widget>
    
        <widget name="userCenterSubTabs" type="tabs">
          <properties mode="view">
            <property name="actionsDisplay">links</property>
            <property name="addForm">true</property>
            <property name="useAjaxForm">#{useAjaxTabs}</property>
            <property name="actions">
              #{userCenterViews.availableSubActions}
            </property>
            <property name="currentTabAction">#{userCenterViews.currentSubView}</property>
            <property name="hideSingleTab">
              #{not
              currentUserCenterView.properties.alwaysDisplaySubTabs}
            </property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-user-dashboard-jsf-2023.10.13.jar /OSGI-INF/layouts-listing-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="listing_task_name" type="listing_task_name">
          <labels>
            <label mode="any">label.workflow.task.name</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data</field>
          </fields>
        </widget>
    
        <widget name="listing_task_document_title_link" type="listing_title_link">
          <labels>
            <label mode="any">label.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.document</field>
            <field>data.document.ref</field>
            <field>data.document.dc.description</field>
          </fields>
        </widget>
    
        <widget name="listing_task_directive" type="text">
          <labels>
            <label mode="any">label.review.directive</label>
          </labels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="value">
              #{layoutValue.data.i18nDirective}
            </property>
          </properties>
        </widget>
    
        <widget name="listing_task_comment" type="text">
          <labels>
            <label mode="any">label.review.user.comment</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.comment</field>
          </fields>
        </widget>
    
        <widget name="listing_task_dueDate" type="datetime">
          <labels>
            <label mode="any">label.workflow.task.duedate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.dueDate</field>
          </fields>
          <properties widgetMode="any">
            <property name="styleClass">
              #{nxu:test(layoutValue.data.expired, 'error', '')}
            </property>
            <property name="pattern">#{nxu:dateAndTimeFormatter('medium')}</property>
          </properties>
        </widget>
    
        <widget name="listing_task_startDate" type="datetime">
          <labels>
            <label mode="any">label.workflow.task.startDate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.startDate</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:dateAndTimeFormatter('medium')}</property>
          </properties>
        </widget>
    
        <widget name="listing_process_name" type="listing_process_name">
          <labels>
            <label mode="any">label.name</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.processInstanceName</field>
          </fields>
        </widget>
    
        <widget name="listing_process_document_title_link" type="listing_title_link">
          <labels>
            <label mode="any">label.title</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.documentModel</field>
            <field>data.documentModel.ref</field>
            <field>data.documentModel.dc.description</field>
          </fields>
          <properties widgetMode="any">
            <property name="tab">TAB_CONTENT_JBPM</property>
          </properties>
        </widget>
    
        <widget name="listing_process_startDate" type="datetime">
          <labels>
            <label mode="any">label.workflow.task.startDate</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>data.processInstanceStartDate</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:dateAndTimeFormatter('medium')}</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-user-dashboard-jsf-2023.10.13.jar /OSGI-INF/layouts-dashboard-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="dashboard_left" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">DASHBOARD_LEFT</property>
          </properties>
          <controls mode="any">
            <control name="gridStyleClass">gridStyle6</control>
          </controls>
        </widget>
    
        <widget name="dashboard_right" type="documentActions">
          <labels>
            <label mode="any"/>
          </labels>
          <properties widgetMode="any">
            <property name="category">DASHBOARD_RIGHT</property>
          </properties>
          <controls mode="any">
            <control name="gridStyleClass">gridStyle6</control>
          </controls>
        </widget>
    
        <widget name="dashboard_user_tasks" type="contentViewWithForms">
          <!-- handles labels to display the widget help within the widget -->
          <handlingLabels>true</handlingLabels>
          <labels>
            <label mode="any">title.dashboard.userTasks</label>
          </labels>
          <helpLabels>
            <label mode="any">label.workflow.tasks</label>
          </helpLabels>
          <translated>true</translated>
          <properties widgetMode="any">
            <property name="contentViewName">user_tasks</property>
            <property name="foldable">true</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_user_workspaces" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">user_workspaces</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">true</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_user_sections" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">user_sections</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">true</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_user_documents" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">user_documents</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">true</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_domain_documents" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">domain_documents</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">true</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_domain_published_documents" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">domain_published_documents</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">true</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_user_sites" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">user_sites</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">true</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_user_deleted_documents" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">user_deleted_documents</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">true</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_user_favorites" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">user_favorites</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">false</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
        <widget name="dashboard_user_shared_documents" type="contentViewWithForms">
          <properties widgetMode="any">
            <property name="contentViewName">user_shared_documents</property>
            <property name="foldable">true</property>
            <property name="hideEmpty">false</property>
            <property name="useAjaxPagination">true</property>
          </properties>
        </widget>
    
      </extension>
  • nuxeo-user-profile-jsf-2023.10.13.jar /OSGI-INF/layouts-contrib.xml
    <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager">
    
        <widget name="summary_user_profile" type="summary_user_profile"/>
    
        <widget name="summary_user_preferences" type="summary_user_preferences"/>
    
        <widget name="avatar" type="avatar">
          <labels>
            <label mode="any">label.userprofile.avatar</label>
          </labels>
          <translated>true</translated>
          <helpLabels>
            <label mode="edit">
              helplabel.userprofile.avatar
            </label>
          </helpLabels>
          <fields>
            <field/>
            <field>userprofile:avatar</field>
          </fields>
          <properties mode="any">
            <property name="file_property_name">userprofile:avatar</property>
          </properties>
        </widget>
    
        <widget name="birthdate" type="datetime">
          <labels>
            <label mode="any">label.userprofile.birthdate</label>
          </labels>
          <translated>true</translated>
          <helpLabels>
            <label mode="edit">
              helplabel.userprofile.birthdate
            </label>
          </helpLabels>
          <fields>
            <field>userprofile:birthdate</field>
          </fields>
          <properties widgetMode="any">
            <property name="pattern">#{nxu:basicDateFormatter()}</property>
          </properties>
          <properties widgetMode="edit">
            <property name="format">#{nxu:basicDateFormatter()}</property>
          </properties>
        </widget>
    
        <widget name="phonenumber" type="text">
          <labels>
            <label mode="any">label.userprofile.phonenumber</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>userprofile:phonenumber</field>
          </fields>
          <properties widgetMode="edit">
            <property name="styleClass">dataInputText</property>
          </properties>
        </widget>
    
        <widget name="gender" type="template">
          <labels>
            <label mode="any">label.userprofile.gender</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>userprofile:gender</field>
          </fields>
          <properties mode="any">
            <property name="template">/widgets/gender_widget_template.xhtml
            </property>
          </properties>
        </widget>
    
        <widget name="locale_view" type="text">
          <labels>
            <label mode="any">label.userpreferences.locale</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>userprofile:locale</field>
          </fields>
          <widgetModes>
            <mode value="view">view</mode>
            <mode value="any">hidden</mode>
          </widgetModes>
        </widget>
    
        <widget name="locale" type="selectOneMenu">
          <labels>
            <label mode="any">label.userpreferences.locale</label>
          </labels>
          <translated>true</translated>
          <fields>
            <field>userprofile:locale</field>
          </fields>
          <properties widgetMode="any">
            <property name="notDisplayDefaultOption">false</property>
          </properties>
          <selectOptions>
            <options itemLabel="#{item.label}" itemValue="#{item.value}" ordering="label" value="#{localeSelector.supportedLocales}" var="item"/>
          </selectOptions>
          <widgetModes>
            <mode value="edit">edit</mode>
            <mode value="any">hidden</mode>
          </widgetModes>
        </widget>
    
        <widget name="timezone" type="template">
          <labels>
            <label mode="any">label.userpreferences.timezone</label>
          </labels>
          <translated>true</translated>
          <widgetModes>
            <mode value="view">view</mode>
            <mode value="any">hidden</mode>
          </widgetModes>
          <properties mode="any">
            <property name="template">/widgets/timezone_widget_template.xhtml
            </property>
          </properties>
        </widget>
    
        <widget name="userProfile" type="layout">
          <properties widgetMode="any">
            <property name="name">userprofile</property>
          </properties>
        </widget>
    
      </extension>